Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5977677
DateTimeTzType.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
DateTimeTzType.php
View Options
<?php
namespace
Doctrine\DBAL\Types
;
use
DateTime
;
use
DateTimeImmutable
;
use
DateTimeInterface
;
use
Doctrine\DBAL\Platforms\AbstractPlatform
;
use
Doctrine\Deprecations\Deprecation
;
use
function
get_class
;
/**
* DateTime type accepting additional information about timezone offsets.
*
* Caution: Databases are not necessarily experts at storing timezone related
* data of dates. First, of not all the supported vendors support storing Timezone data, and some of
* them only use the offset to calculate the timestamp in its default timezone (usually UTC) and persist
* the value without the offset information. They even don't save the actual timezone names attached
* to a DateTime instance (for example "Europe/Berlin" or "America/Montreal") but the current offset
* of them related to UTC. That means, depending on daylight saving times or not, you may get different
* offsets.
*
* This datatype makes only sense to use, if your application only needs to accept the timezone offset,
* not the actual timezone that uses transitions. Otherwise your DateTime instance
* attached with a timezone such as "Europe/Berlin" gets saved into the database with
* the offset and re-created from persistence with only the offset, not the original timezone
* attached.
*/
class
DateTimeTzType
extends
Type
implements
PhpDateTimeMappingType
{
/**
* {@inheritDoc}
*/
public
function
getName
()
{
return
Types
::
DATETIMETZ_MUTABLE
;
}
/**
* {@inheritDoc}
*/
public
function
getSQLDeclaration
(
array
$column
,
AbstractPlatform
$platform
)
{
return
$platform
->
getDateTimeTzTypeDeclarationSQL
(
$column
);
}
/**
* {@inheritDoc}
*
* @param T $value
*
* @return (T is null ? null : string)
*
* @template T
*/
public
function
convertToDatabaseValue
(
$value
,
AbstractPlatform
$platform
)
{
if
(
$value
===
null
)
{
return
$value
;
}
if
(
$value
instanceof
DateTimeImmutable
)
{
Deprecation
::
triggerIfCalledFromOutside
(
'doctrine/dbal'
,
'https://github.com/doctrine/dbal/pull/6017'
,
'Passing an instance of %s is deprecated, use %s::%s() instead.'
,
get_class
(
$value
),
DateTimeTzImmutableType
::
class
,
__FUNCTION__
,
);
}
if
(
$value
instanceof
DateTimeInterface
)
{
return
$value
->
format
(
$platform
->
getDateTimeTzFormatString
());
}
throw
ConversionException
::
conversionFailedInvalidType
(
$value
,
$this
->
getName
(),
[
'null'
,
DateTime
::
class
],
);
}
/**
* {@inheritDoc}
*
* @param T $value
*
* @return (T is null ? null : DateTimeInterface)
*
* @template T
*/
public
function
convertToPHPValue
(
$value
,
AbstractPlatform
$platform
)
{
if
(
$value
instanceof
DateTimeImmutable
)
{
Deprecation
::
triggerIfCalledFromOutside
(
'doctrine/dbal'
,
'https://github.com/doctrine/dbal/pull/6017'
,
'Passing an instance of %s is deprecated, use %s::%s() instead.'
,
get_class
(
$value
),
DateTimeTzImmutableType
::
class
,
__FUNCTION__
,
);
}
if
(
$value
===
null
||
$value
instanceof
DateTimeInterface
)
{
return
$value
;
}
$dateTime
=
DateTime
::
createFromFormat
(
$platform
->
getDateTimeTzFormatString
(),
$value
);
if
(
$dateTime
!==
false
)
{
return
$dateTime
;
}
throw
ConversionException
::
conversionFailedFormat
(
$value
,
$this
->
getName
(),
$platform
->
getDateTimeTzFormatString
(),
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Oct 3, 20:02 (2 d, 23 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
4e/b0/af9a6472d0e07112537d45fa675b
Default Alt Text
DateTimeTzType.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment