From 8e74a360cf2e2444a1bc5bfa9c2796729be5373a Mon Sep 17 00:00:00 2001 From: Alessandro Chitolina Date: Sun, 9 Jun 2024 14:49:32 +0200 Subject: [PATCH] chore(deps): update minimum php version required to 8.1 --- composer.json | 15 +++++--- lib/DTOClassMapFactory.php | 10 +++--- .../DisallowConstructionOfDTOObjects.php | 11 +++--- phpunit.xml.dist | 35 ++++++++----------- tests/data/dto_resolver.php | 16 ++++----- 5 files changed, 41 insertions(+), 46 deletions(-) diff --git a/composer.json b/composer.json index e62c103..fa66749 100644 --- a/composer.json +++ b/composer.json @@ -10,13 +10,14 @@ } ], "require": { - "php": "^7.4 || ^8.0", - "kcs/class-finder": "^0.3 || ^1.0" + "php": "^8.1", + "kcs/class-finder": ">=0.3,<1.0" }, "require-dev": { + "friendsofphp/proxy-manager-lts": "*", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.23", - "phpunit/phpunit": "^9.5", + "phpstan/phpstan": "^1.11", + "phpunit/phpunit": "^10 || ^11", "solido/dto-management": "*", "solido/php-coding-standards": "dev-master", "roave/security-advisories": "dev-master" @@ -45,6 +46,10 @@ "exclude": [ ".github", "tests", ".gitignore" ] }, "config": { - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true, + "phpstan/extension-installer": true + } } } diff --git a/lib/DTOClassMapFactory.php b/lib/DTOClassMapFactory.php index fb40619..db9de58 100644 --- a/lib/DTOClassMapFactory.php +++ b/lib/DTOClassMapFactory.php @@ -29,8 +29,6 @@ class DTOClassMapFactory { - /** @var string[] */ - private array $dtoNamespaces; /** @var string[] */ private array $excludedInterfaces; /** @var string[] */ @@ -40,9 +38,11 @@ class DTOClassMapFactory * @param string[] $dtoNamespaces * @param string[] $excludedInterfaces */ - public function __construct(array $dtoNamespaces, array $excludedInterfaces) - { - $this->dtoNamespaces = $dtoNamespaces; + public function __construct( + /** @var string[] */ + private readonly array $dtoNamespaces, + array $excludedInterfaces, + ) { $this->excludedInterfaces = array_combine($excludedInterfaces, array_fill(0, count($excludedInterfaces), true)); $this->buildMap(); diff --git a/lib/Rule/Construction/DisallowConstructionOfDTOObjects.php b/lib/Rule/Construction/DisallowConstructionOfDTOObjects.php index a9c9643..38f714b 100644 --- a/lib/Rule/Construction/DisallowConstructionOfDTOObjects.php +++ b/lib/Rule/Construction/DisallowConstructionOfDTOObjects.php @@ -27,13 +27,10 @@ class DisallowConstructionOfDTOObjects implements Rule { - private DTOClassMapFactory $dtoClassMapFactory; - private ReflectionProvider $reflectionProvider; - - public function __construct(DTOClassMapFactory $dtoClassMapFactory, ReflectionProvider $reflectionProvider) - { - $this->dtoClassMapFactory = $dtoClassMapFactory; - $this->reflectionProvider = $reflectionProvider; + public function __construct( + private readonly DTOClassMapFactory $dtoClassMapFactory, + private readonly ReflectionProvider $reflectionProvider, + ) { } public function getNodeType(): string diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 18acab9..8f6050d 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,24 +1,17 @@ - - - - lib - - - - - - - - - - tests/ - - + + + + + + + tests/ + + + + + lib + + diff --git a/tests/data/dto_resolver.php b/tests/data/dto_resolver.php index 1ae5564..3c0b801 100644 --- a/tests/data/dto_resolver.php +++ b/tests/data/dto_resolver.php @@ -8,14 +8,14 @@ use function PHPStan\Testing\assertType; function (ResolverInterface $resolver) { - assertType('mixed', $resolver->resolve('stdClass')); - assertType('mixed', $resolver->resolve(stdClass::class)); - assertType('mixed', $resolver->resolve('unknown')); - assertType('mixed', $resolver->resolve(UnknownClass::class)); - assertType('mixed', $resolver->resolve(NonDTO::class)); - assertType('mixed', $resolver->resolve('Tests\DTO\v1\v1_0\NonDTO')); - assertType('mixed', $resolver->resolve(ExampleDTO::class)); - assertType('mixed', $resolver->resolve('Tests\DTO\v1\v1_0\ExampleDTO')); + assertType('T of object (method Solido\DtoManagement\InterfaceResolver\ResolverInterface::resolve(), parameter)', $resolver->resolve('stdClass')); + assertType('T of object (method Solido\DtoManagement\InterfaceResolver\ResolverInterface::resolve(), parameter)', $resolver->resolve(stdClass::class)); + assertType('T of object (method Solido\DtoManagement\InterfaceResolver\ResolverInterface::resolve(), parameter)', $resolver->resolve('unknown')); + assertType('T of object (method Solido\DtoManagement\InterfaceResolver\ResolverInterface::resolve(), parameter)', $resolver->resolve(UnknownClass::class)); + assertType('T of object (method Solido\DtoManagement\InterfaceResolver\ResolverInterface::resolve(), parameter)', $resolver->resolve(NonDTO::class)); + assertType('T of object (method Solido\DtoManagement\InterfaceResolver\ResolverInterface::resolve(), parameter)', $resolver->resolve('Tests\DTO\v1\v1_0\NonDTO')); + assertType('T of object (method Solido\DtoManagement\InterfaceResolver\ResolverInterface::resolve(), parameter)', $resolver->resolve(ExampleDTO::class)); + assertType('T of object (method Solido\DtoManagement\InterfaceResolver\ResolverInterface::resolve(), parameter)', $resolver->resolve('Tests\DTO\v1\v1_0\ExampleDTO')); assertType('Tests\Fixtures\DTO\Contracts\ExampleDTOInterface', $resolver->resolve(ExampleDTOInterface::class)); assertType('Tests\Fixtures\DTO\Contracts\ExampleDTOInterface', $resolver->resolve('Tests\Fixtures\DTO\Contracts\ExampleDTOInterface'));