From 59ff537db9f19ed0bc0010f9ab2e48dd190c4074 Mon Sep 17 00:00:00 2001 From: Frank van Hest Date: Tue, 30 Dec 2025 16:17:47 +0100 Subject: [PATCH 1/4] Drop support for PHP 8.2 and 8.3 --- .github/workflows/tests.yml | 2 +- composer.json | 2 +- docker/php82/Dockerfile | 10 ---------- docker/php82/conf.d/error_reporting.ini | 1 - docker/php82/conf.d/xdebug.ini | 6 ------ docker/php83/Dockerfile | 10 ---------- docker/php83/conf.d/error_reporting.ini | 1 - docker/php83/conf.d/xdebug.ini | 6 ------ 8 files changed, 2 insertions(+), 36 deletions(-) delete mode 100644 docker/php82/Dockerfile delete mode 100644 docker/php82/conf.d/error_reporting.ini delete mode 100644 docker/php82/conf.d/xdebug.ini delete mode 100644 docker/php83/Dockerfile delete mode 100644 docker/php83/conf.d/error_reporting.ini delete mode 100644 docker/php83/conf.d/xdebug.ini diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 996060e..aa11ab8 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -11,7 +11,7 @@ jobs: strategy: fail-fast: true matrix: - php: [8.2, 8.3, 8.4, 8.5] + php: [8.4, 8.5] composer-flags: [ '' ] stability: ['prefer-stable'] experimental: [false] diff --git a/composer.json b/composer.json index 5429cba..36256d8 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ } ], "require": { - "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" + "php": "~8.4.0 || ~8.5.0" }, "require-dev": { "beberlei/assert": "~v3.3", diff --git a/docker/php82/Dockerfile b/docker/php82/Dockerfile deleted file mode 100644 index 0fa41f2..0000000 --- a/docker/php82/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM php:8.2-cli - -RUN apt-get update && \ - apt-get install -y --no-install-recommends git libzip-dev zip unzip \ - && docker-php-ext-install zip - -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - -RUN pecl install xdebug \ - && docker-php-ext-enable xdebug diff --git a/docker/php82/conf.d/error_reporting.ini b/docker/php82/conf.d/error_reporting.ini deleted file mode 100644 index 7e566f4..0000000 --- a/docker/php82/conf.d/error_reporting.ini +++ /dev/null @@ -1 +0,0 @@ -error_reporting=E_ALL diff --git a/docker/php82/conf.d/xdebug.ini b/docker/php82/conf.d/xdebug.ini deleted file mode 100644 index 5a891b8..0000000 --- a/docker/php82/conf.d/xdebug.ini +++ /dev/null @@ -1,6 +0,0 @@ -zend_extension=xdebug - -[xdebug] -xdebug.mode=coverage -xdebug.client_host=host.docker.internal -xdebug.start_with_request=yes diff --git a/docker/php83/Dockerfile b/docker/php83/Dockerfile deleted file mode 100644 index 6aed288..0000000 --- a/docker/php83/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM php:8.3-cli - -RUN apt-get update && \ - apt-get install -y --no-install-recommends git libzip-dev zip unzip \ - && docker-php-ext-install zip - -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - -RUN pecl install xdebug \ - && docker-php-ext-enable xdebug diff --git a/docker/php83/conf.d/error_reporting.ini b/docker/php83/conf.d/error_reporting.ini deleted file mode 100644 index 7e566f4..0000000 --- a/docker/php83/conf.d/error_reporting.ini +++ /dev/null @@ -1 +0,0 @@ -error_reporting=E_ALL diff --git a/docker/php83/conf.d/xdebug.ini b/docker/php83/conf.d/xdebug.ini deleted file mode 100644 index 5a891b8..0000000 --- a/docker/php83/conf.d/xdebug.ini +++ /dev/null @@ -1,6 +0,0 @@ -zend_extension=xdebug - -[xdebug] -xdebug.mode=coverage -xdebug.client_host=host.docker.internal -xdebug.start_with_request=yes From 57a2e491b71a7a19d40d6feb181462bf0b97f729 Mon Sep 17 00:00:00 2001 From: Frank van Hest Date: Tue, 30 Dec 2025 16:18:10 +0100 Subject: [PATCH 2/4] Allow public access to value property --- src/Abstracts/BooleanValueObject.php | 5 +++-- src/Abstracts/FloatValueObject.php | 5 +++-- src/Abstracts/IntegerValueObject.php | 5 +++-- src/Abstracts/StringValueObject.php | 5 +++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/Abstracts/BooleanValueObject.php b/src/Abstracts/BooleanValueObject.php index 73a6e91..b95b6d7 100644 --- a/src/Abstracts/BooleanValueObject.php +++ b/src/Abstracts/BooleanValueObject.php @@ -9,8 +9,9 @@ { use DontUseMagicMethods; - final protected function __construct(private bool $value) - { + final protected function __construct( + private(set) bool $value, + ) { } final public function asBoolean(): bool diff --git a/src/Abstracts/FloatValueObject.php b/src/Abstracts/FloatValueObject.php index 7670be2..71439d2 100644 --- a/src/Abstracts/FloatValueObject.php +++ b/src/Abstracts/FloatValueObject.php @@ -10,8 +10,9 @@ { use DontUseMagicMethods; - final protected function __construct(private float $value) - { + final protected function __construct( + private(set) float $value, + ) { $this->assert($this->value); } diff --git a/src/Abstracts/IntegerValueObject.php b/src/Abstracts/IntegerValueObject.php index d6617c9..48d327c 100644 --- a/src/Abstracts/IntegerValueObject.php +++ b/src/Abstracts/IntegerValueObject.php @@ -10,8 +10,9 @@ { use DontUseMagicMethods; - final private function __construct(private int $value) - { + final private function __construct( + private(set) int $value, + ) { $this->assert($this->value); } diff --git a/src/Abstracts/StringValueObject.php b/src/Abstracts/StringValueObject.php index 98d4e32..cc474a4 100644 --- a/src/Abstracts/StringValueObject.php +++ b/src/Abstracts/StringValueObject.php @@ -10,8 +10,9 @@ { use DontUseMagicMethods; - final protected function __construct(private string $value) - { + final protected function __construct( + private(set) string $value, + ) { $this->assert($this->value); } From 24d735727b0a707ed5958f2815d47f9f2fbf30ab Mon Sep 17 00:00:00 2001 From: Frank van Hest Date: Tue, 30 Dec 2025 16:22:00 +0100 Subject: [PATCH 3/4] Updated phpstan and removed ignored lines --- composer.json | 2 +- tests/Abstracts/BooleanValueObjectTest.php | 1 - tests/Abstracts/FloatValueObjectTest.php | 1 - tests/Abstracts/IntegerValueObjectTest.php | 1 - tests/Abstracts/StringValueObjectTest.php | 1 - 5 files changed, 1 insertion(+), 5 deletions(-) diff --git a/composer.json b/composer.json index 36256d8..6ce3839 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ "require-dev": { "beberlei/assert": "~v3.3", "infection/infection": "^0.32", - "phpstan/phpstan": "^1.10", + "phpstan/phpstan": "^2.1", "phpunit/phpunit": "^10.5", "roave/security-advisories": "dev-latest" }, diff --git a/tests/Abstracts/BooleanValueObjectTest.php b/tests/Abstracts/BooleanValueObjectTest.php index 25edbd9..08760c1 100644 --- a/tests/Abstracts/BooleanValueObjectTest.php +++ b/tests/Abstracts/BooleanValueObjectTest.php @@ -117,7 +117,6 @@ public function testPreventMagicUnset(): void $this->expectExceptionMessage( sprintf('Don\t use magic method __unset in class %s', AreWeGreat::class) ); - /** @phpstan-ignore-next-line */ unset($object->nonExistingProperty); } diff --git a/tests/Abstracts/FloatValueObjectTest.php b/tests/Abstracts/FloatValueObjectTest.php index 4283d70..ec1fcf0 100644 --- a/tests/Abstracts/FloatValueObjectTest.php +++ b/tests/Abstracts/FloatValueObjectTest.php @@ -129,7 +129,6 @@ public function testPreventMagicUnset(): void $this->expectExceptionMessage( sprintf('Don\t use magic method __unset in class %s', FloatGreaterThanZeroPointOne::class) ); - /** @phpstan-ignore-next-line */ unset($object->nonExistingProperty); } diff --git a/tests/Abstracts/IntegerValueObjectTest.php b/tests/Abstracts/IntegerValueObjectTest.php index 2a910c0..3588ac8 100644 --- a/tests/Abstracts/IntegerValueObjectTest.php +++ b/tests/Abstracts/IntegerValueObjectTest.php @@ -127,7 +127,6 @@ public function testPreventMagicUnset(): void $this->expectExceptionMessage( sprintf('Don\t use magic method __unset in class %s', IntegerGreaterThanZero::class) ); - /** @phpstan-ignore-next-line */ unset($object->nonExistingProperty); } diff --git a/tests/Abstracts/StringValueObjectTest.php b/tests/Abstracts/StringValueObjectTest.php index deb82e8..5c3199b 100644 --- a/tests/Abstracts/StringValueObjectTest.php +++ b/tests/Abstracts/StringValueObjectTest.php @@ -123,7 +123,6 @@ public function testPreventMagicUnset(): void $this->expectExceptionMessage( sprintf('Don\t use magic method __unset in class %s', NotEmptyString::class) ); - /** @phpstan-ignore-next-line */ unset($foo->nonExistingProperty); } From 529ed3bb839226b43e2c3f6ecfb838c0861e81c8 Mon Sep 17 00:00:00 2001 From: Frank van Hest Date: Tue, 30 Dec 2025 16:23:12 +0100 Subject: [PATCH 4/4] Updated PHPUnit --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 6ce3839..bc9f12b 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ "beberlei/assert": "~v3.3", "infection/infection": "^0.32", "phpstan/phpstan": "^2.1", - "phpunit/phpunit": "^10.5", + "phpunit/phpunit": "^12.5", "roave/security-advisories": "dev-latest" }, "autoload": {