Download the PHP package vasek-purchart/doctrine-date-time-immutable-types-bundle without Composer
On this page you can find all versions of the php package vasek-purchart/doctrine-date-time-immutable-types-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download vasek-purchart/doctrine-date-time-immutable-types-bundle
More information about vasek-purchart/doctrine-date-time-immutable-types-bundle
Files in vasek-purchart/doctrine-date-time-immutable-types-bundle
Package doctrine-date-time-immutable-types-bundle
Short Description Bundle integration of Doctrine DateTimeImmutable types for Symfony
License MIT
Informations about the package doctrine-date-time-immutable-types-bundle
Doctrine DateTimeImmutable Types Bundle
In Doctrine DBAL 2.6 immutable DateTime types were added, so this bundle no longer uses custom DateTime types implementation, but rather offers control, how the immutable types are registered, offering the possibility to replace the original DateTime types.
If you cannot upgrade to Doctrine DBAL 2.6 use 1.0 version of this bundle, which uses the
vasek-purchart/doctrine-date-time-immutable-types
custom DateTime types implementation.
Why would I want to use immutable types?
All Doctrine date/time based types are using DateTime
instances, which are mutable. This can lead to breaking encapsulation and therefore bugs. For two reasons:
1) You accidentally modify a date when you are doing some computation on it:
2) Or you do intentionally try to update it, which fails because Doctrine will not see this:
You can prevent this behaviour by returning a new instance (cloning) or using DateTimeImmutable
(which returns a new instance when modified).
Configuration
Configuration structure with listed default values:
register
add
- add types as new - suffixed with_immutable
(e.g.datetime_immutable
) - this is already done by DBAL from version 2.6replace
- replace the original typesdate
,time
,datetime
,datetimetz
, i.e. making them immutable
Usage
If you are using the replace
option, you don't need to change any property mappings of your entities.
If you are using the add
option (default), you only have to suffix your field types with _immutable
:
Installation
Install package vasek-purchart/doctrine-date-time-immutable-types-bundle
with Composer:
Register the bundle in your application kernel:
All versions of doctrine-date-time-immutable-types-bundle with dependencies
doctrine/doctrine-bundle Version ~1.3
symfony/config Version ~3.0
symfony/dependency-injection Version ~3.0
symfony/http-kernel Version ~3.0
symfony/yaml Version ~3.0