From 908efd35c01ed3ec087523f548ba7dd3365d69b6 Mon Sep 17 00:00:00 2001 From: "Alexander M. Turek" Date: Thu, 8 Feb 2024 16:12:55 +0100 Subject: [PATCH] Made Carbon types compatible with DBAL 4 (#434) --- composer.json | 2 +- src/Types/CarbonDateTimeType.php | 30 +-------------- src/Types/CarbonDateTimeTzType.php | 30 +-------------- src/Types/CarbonDateType.php | 30 +-------------- src/Types/CarbonImmutableDateTimeType.php | 34 ++--------------- src/Types/CarbonImmutableDateTimeTzType.php | 34 ++--------------- src/Types/CarbonImmutableDateType.php | 34 ++--------------- src/Types/CarbonImmutableTimeType.php | 34 ++--------------- .../CarbonImmutableTypeImplementation.php | 37 +++++++++++++++++++ src/Types/CarbonTimeType.php | 30 +-------------- src/Types/CarbonTypeImplementation.php | 37 +++++++++++++++++++ 11 files changed, 99 insertions(+), 233 deletions(-) create mode 100644 src/Types/CarbonImmutableTypeImplementation.php create mode 100644 src/Types/CarbonTypeImplementation.php diff --git a/composer.json b/composer.json index c3bb309e..751e5489 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ "require-dev": { "doctrine/annotations": "^1.14 || ^2", "doctrine/coding-standard": "^9.0.2 || ^12.0", - "nesbot/carbon": "*", + "nesbot/carbon": "^2.72 || ^3", "phpunit/phpunit": "^8.5 || ^9.6", "squizlabs/php_codesniffer": "^3.8", "symfony/cache": "^5.4 || ^6.4 || ^7.0", diff --git a/src/Types/CarbonDateTimeType.php b/src/Types/CarbonDateTimeType.php index 03350b46..d6a15dc3 100644 --- a/src/Types/CarbonDateTimeType.php +++ b/src/Types/CarbonDateTimeType.php @@ -2,14 +2,12 @@ namespace DoctrineExtensions\Types; -use Carbon\Carbon; -use DateTime; -use DateTimeInterface; -use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\DateTimeType; class CarbonDateTimeType extends DateTimeType { + use CarbonTypeImplementation; + public const CARBONDATETIME = 'carbondatetime'; /** @@ -19,28 +17,4 @@ public function getName() { return self::CARBONDATETIME; } - - /** - * {@inheritDoc} - * - * @return Carbon|DateTimeInterface - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - $result = parent::convertToPHPValue($value, $platform); - - if ($result instanceof DateTime) { - return Carbon::instance($result); - } - - return $result; - } - - /** - * {@inheritDoc} - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - return true; - } } diff --git a/src/Types/CarbonDateTimeTzType.php b/src/Types/CarbonDateTimeTzType.php index ff8f183b..54d0aa4d 100644 --- a/src/Types/CarbonDateTimeTzType.php +++ b/src/Types/CarbonDateTimeTzType.php @@ -2,14 +2,12 @@ namespace DoctrineExtensions\Types; -use Carbon\Carbon; -use DateTime; -use DateTimeInterface; -use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\DateTimeTzType; class CarbonDateTimeTzType extends DateTimeTzType { + use CarbonTypeImplementation; + public const CARBONDATETIMETZ = 'carbondatetimetz'; /** @@ -19,28 +17,4 @@ public function getName() { return self::CARBONDATETIMETZ; } - - /** - * {@inheritDoc} - * - * @return Carbon|DateTimeInterface - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - $result = parent::convertToPHPValue($value, $platform); - - if ($result instanceof DateTime) { - return Carbon::instance($result); - } - - return $result; - } - - /** - * {@inheritDoc} - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - return true; - } } diff --git a/src/Types/CarbonDateType.php b/src/Types/CarbonDateType.php index 0e398cc4..b0369578 100644 --- a/src/Types/CarbonDateType.php +++ b/src/Types/CarbonDateType.php @@ -2,14 +2,12 @@ namespace DoctrineExtensions\Types; -use Carbon\Carbon; -use DateTime; -use DateTimeInterface; -use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\DateType; class CarbonDateType extends DateType { + use CarbonTypeImplementation; + public const CARBONDATE = 'carbondate'; /** @@ -19,28 +17,4 @@ public function getName() { return self::CARBONDATE; } - - /** - * {@inheritDoc} - * - * @return Carbon|DateTimeInterface - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - $result = parent::convertToPHPValue($value, $platform); - - if ($result instanceof DateTime) { - return Carbon::instance($result); - } - - return $result; - } - - /** - * {@inheritDoc} - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - return true; - } } diff --git a/src/Types/CarbonImmutableDateTimeType.php b/src/Types/CarbonImmutableDateTimeType.php index d03dcadf..2316858c 100644 --- a/src/Types/CarbonImmutableDateTimeType.php +++ b/src/Types/CarbonImmutableDateTimeType.php @@ -2,14 +2,12 @@ namespace DoctrineExtensions\Types; -use Carbon\CarbonImmutable; -use DateTime; -use DateTimeInterface; -use Doctrine\DBAL\Platforms\AbstractPlatform; -use Doctrine\DBAL\Types\DateTimeType; +use Carbon\Doctrine\DateTimeImmutableType; -class CarbonImmutableDateTimeType extends DateTimeType +class CarbonImmutableDateTimeType extends DateTimeImmutableType { + use CarbonImmutableTypeImplementation; + public const CARBONDATETIME = 'carbondatetime_immutable'; /** @@ -19,28 +17,4 @@ public function getName() { return self::CARBONDATETIME; } - - /** - * {@inheritDoc} - * - * @return CarbonImmutable|DateTimeInterface - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - $result = parent::convertToPHPValue($value, $platform); - - if ($result instanceof DateTime) { - return CarbonImmutable::instance($result); - } - - return $result; - } - - /** - * {@inheritDoc} - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - return true; - } } diff --git a/src/Types/CarbonImmutableDateTimeTzType.php b/src/Types/CarbonImmutableDateTimeTzType.php index f73747cf..b9043bd6 100644 --- a/src/Types/CarbonImmutableDateTimeTzType.php +++ b/src/Types/CarbonImmutableDateTimeTzType.php @@ -2,14 +2,12 @@ namespace DoctrineExtensions\Types; -use Carbon\CarbonImmutable; -use DateTime; -use DateTimeInterface; -use Doctrine\DBAL\Platforms\AbstractPlatform; -use Doctrine\DBAL\Types\DateTimeTzType; +use Doctrine\DBAL\Types\DateTimeTzImmutableType; -class CarbonImmutableDateTimeTzType extends DateTimeTzType +class CarbonImmutableDateTimeTzType extends DateTimeTzImmutableType { + use CarbonImmutableTypeImplementation; + public const CARBONDATETIMETZ = 'carbondatetimetz_immutable'; /** @@ -19,28 +17,4 @@ public function getName() { return self::CARBONDATETIMETZ; } - - /** - * {@inheritDoc} - * - * @return CarbonImmutable|DateTimeInterface - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - $result = parent::convertToPHPValue($value, $platform); - - if ($result instanceof DateTime) { - return CarbonImmutable::instance($result); - } - - return $result; - } - - /** - * {@inheritDoc} - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - return true; - } } diff --git a/src/Types/CarbonImmutableDateType.php b/src/Types/CarbonImmutableDateType.php index 72cc6e11..65ea29f0 100644 --- a/src/Types/CarbonImmutableDateType.php +++ b/src/Types/CarbonImmutableDateType.php @@ -2,14 +2,12 @@ namespace DoctrineExtensions\Types; -use Carbon\CarbonImmutable; -use DateTime; -use DateTimeInterface; -use Doctrine\DBAL\Platforms\AbstractPlatform; -use Doctrine\DBAL\Types\DateType; +use Doctrine\DBAL\Types\DateImmutableType; -class CarbonImmutableDateType extends DateType +class CarbonImmutableDateType extends DateImmutableType { + use CarbonImmutableTypeImplementation; + public const CARBONDATE = 'carbondate_immutable'; /** @@ -19,28 +17,4 @@ public function getName() { return self::CARBONDATE; } - - /** - * {@inheritDoc} - * - * @return CarbonImmutable|DateTimeInterface - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - $result = parent::convertToPHPValue($value, $platform); - - if ($result instanceof DateTime) { - return CarbonImmutable::instance($result); - } - - return $result; - } - - /** - * {@inheritDoc} - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - return true; - } } diff --git a/src/Types/CarbonImmutableTimeType.php b/src/Types/CarbonImmutableTimeType.php index b1402fc8..9de40fe9 100644 --- a/src/Types/CarbonImmutableTimeType.php +++ b/src/Types/CarbonImmutableTimeType.php @@ -2,14 +2,12 @@ namespace DoctrineExtensions\Types; -use Carbon\CarbonImmutable; -use DateTime; -use DateTimeInterface; -use Doctrine\DBAL\Platforms\AbstractPlatform; -use Doctrine\DBAL\Types\TimeType; +use Doctrine\DBAL\Types\TimeImmutableType; -class CarbonImmutableTimeType extends TimeType +class CarbonImmutableTimeType extends TimeImmutableType { + use CarbonImmutableTypeImplementation; + public const CARBONTIME = 'carbontime_immutable'; /** @@ -19,28 +17,4 @@ public function getName() { return self::CARBONTIME; } - - /** - * {@inheritDoc} - * - * @return CarbonImmutable|DateTimeInterface - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - $result = parent::convertToPHPValue($value, $platform); - - if ($result instanceof DateTime) { - return CarbonImmutable::instance($result); - } - - return $result; - } - - /** - * {@inheritDoc} - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - return true; - } } diff --git a/src/Types/CarbonImmutableTypeImplementation.php b/src/Types/CarbonImmutableTypeImplementation.php new file mode 100644 index 00000000..6bf30860 --- /dev/null +++ b/src/Types/CarbonImmutableTypeImplementation.php @@ -0,0 +1,37 @@ +