diff --git a/composer.json b/composer.json index 8417253..f2d4f0b 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,8 @@ "php": "^8.1", "illuminate/console": "^10.0|^11.0", "illuminate/support": "^10.0|^11.0", - "spatie/laravel-package-tools": "^1.16.2" + "spatie/laravel-package-tools": "^1.16.2", + "symfony/polyfill-php83": "^1.30" }, "require-dev": { "illuminate/testing": "^10.0|^11.0", diff --git a/src/AndSpecification.php b/src/AndSpecification.php index 0bb82ff..e37068d 100644 --- a/src/AndSpecification.php +++ b/src/AndSpecification.php @@ -4,6 +4,8 @@ namespace Maartenpaauw\Specifications; +use Override; + /** * @template TCandidate * @@ -18,6 +20,7 @@ public function __construct( private readonly array $specifications, ) {} + #[Override] public function isSatisfiedBy(mixed $candidate): bool { foreach ($this->specifications as $specification) { diff --git a/src/Commands/MakeSpecificationCommand.php b/src/Commands/MakeSpecificationCommand.php index 428aaa7..e19d01d 100644 --- a/src/Commands/MakeSpecificationCommand.php +++ b/src/Commands/MakeSpecificationCommand.php @@ -5,6 +5,7 @@ namespace Maartenpaauw\Specifications\Commands; use Illuminate\Console\GeneratorCommand; +use Override; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Input\InputOption; @@ -19,6 +20,7 @@ final class MakeSpecificationCommand extends GeneratorCommand */ protected $type = 'Specification'; + #[Override] protected function getStub(): string { if ($this->option('composite')) { @@ -35,6 +37,7 @@ protected function getStub(): string /** * @inheritDoc */ + #[Override] protected function getDefaultNamespace(mixed $rootNamespace): string { return sprintf('%s\Specifications', $rootNamespace); @@ -43,6 +46,7 @@ protected function getDefaultNamespace(mixed $rootNamespace): string /** * @inheritDoc */ + #[Override] protected function buildClass(mixed $name): string { $replacements = [ @@ -59,6 +63,7 @@ protected function buildClass(mixed $name): string /** * @return array */ + #[Override] protected function getOptions(): array { return [ diff --git a/src/NotSpecification.php b/src/NotSpecification.php index b9c75ad..a007af5 100644 --- a/src/NotSpecification.php +++ b/src/NotSpecification.php @@ -4,6 +4,8 @@ namespace Maartenpaauw\Specifications; +use Override; + /** * @template TCandidate * @@ -18,6 +20,7 @@ public function __construct( private readonly Specification $specification, ) {} + #[Override] public function isSatisfiedBy(mixed $candidate): bool { return ! $this->specification->isSatisfiedBy($candidate); diff --git a/src/OrSpecification.php b/src/OrSpecification.php index da9e93b..aa4d2f1 100644 --- a/src/OrSpecification.php +++ b/src/OrSpecification.php @@ -4,6 +4,8 @@ namespace Maartenpaauw\Specifications; +use Override; + /** * @template TCandidate * @@ -18,6 +20,7 @@ public function __construct( private readonly array $specifications, ) {} + #[Override] public function isSatisfiedBy(mixed $candidate): bool { foreach ($this->specifications as $specification) { diff --git a/src/SpecificationsServiceProvider.php b/src/SpecificationsServiceProvider.php index 14fa3de..6a8b6cc 100644 --- a/src/SpecificationsServiceProvider.php +++ b/src/SpecificationsServiceProvider.php @@ -7,11 +7,13 @@ use Illuminate\Support\Collection; use Maartenpaauw\Specifications\Commands\MakeSpecificationCommand; use Maartenpaauw\Specifications\Laravel\CollectionMatchingMacro; +use Override; use Spatie\LaravelPackageTools\Package; use Spatie\LaravelPackageTools\PackageServiceProvider; final class SpecificationsServiceProvider extends PackageServiceProvider { + #[Override] public function configurePackage(Package $package): void { $package @@ -20,6 +22,7 @@ public function configurePackage(Package $package): void ->hasCommand(MakeSpecificationCommand::class); } + #[Override] public function packageRegistered(): void { /** @var string $method */ diff --git a/src/VerboseSpecification.php b/src/VerboseSpecification.php index 56e5829..974fc62 100644 --- a/src/VerboseSpecification.php +++ b/src/VerboseSpecification.php @@ -4,6 +4,8 @@ namespace Maartenpaauw\Specifications; +use Override; + /** * @template TCandidate * @@ -40,6 +42,7 @@ public function message(): string * * @throws DissatisfiedSpecification */ + #[Override] public function isSatisfiedBy(mixed $candidate): bool { if ($this->origin->isSatisfiedBy($candidate)) { diff --git a/src/XorSpecification.php b/src/XorSpecification.php index c332f09..596da9f 100644 --- a/src/XorSpecification.php +++ b/src/XorSpecification.php @@ -4,6 +4,8 @@ namespace Maartenpaauw\Specifications; +use Override; + /** * @template TCandidate * @@ -18,6 +20,7 @@ public function __construct( private readonly array $specifications, ) {} + #[Override] public function isSatisfiedBy(mixed $candidate): bool { $satisfiedSpecifications = array_filter( diff --git a/tests/Commands/MakeSpecificationCommandTest.php b/tests/Commands/MakeSpecificationCommandTest.php index 8707246..bffb946 100644 --- a/tests/Commands/MakeSpecificationCommandTest.php +++ b/tests/Commands/MakeSpecificationCommandTest.php @@ -96,6 +96,6 @@ public function test_it_should_be_possible_to_create_a_composite_specification_w protected function assertSpecificationMatchesSnapshot(string $name): void { - $this->assertMatchesFileSnapshot(app_path(sprintf('Specifications/%s.php', $name))); + $this->assertMatchesFileSnapshot(app_path(\sprintf('Specifications/%s.php', $name))); } } diff --git a/workbench/app/LengthSpecification.php b/workbench/app/LengthSpecification.php index b67e7a4..9f43a65 100644 --- a/workbench/app/LengthSpecification.php +++ b/workbench/app/LengthSpecification.php @@ -5,6 +5,7 @@ namespace Workbench\App; use Maartenpaauw\Specifications\CompositeSpecification; +use Override; /** * @extends CompositeSpecification @@ -18,6 +19,7 @@ public function __construct( /** * @inheritDoc */ + #[Override] public function isSatisfiedBy(mixed $candidate): bool { return mb_strlen($candidate) === $this->length; diff --git a/workbench/app/NegativeSpecification.php b/workbench/app/NegativeSpecification.php index 7cd8915..bb1aed5 100644 --- a/workbench/app/NegativeSpecification.php +++ b/workbench/app/NegativeSpecification.php @@ -5,6 +5,7 @@ namespace Workbench\App; use Maartenpaauw\Specifications\CompositeSpecification; +use Override; /** * @extends CompositeSpecification @@ -14,6 +15,7 @@ final class NegativeSpecification extends CompositeSpecification /** * @inheritDoc */ + #[Override] public function isSatisfiedBy(mixed $candidate): bool { return false; diff --git a/workbench/app/PositiveSpecification.php b/workbench/app/PositiveSpecification.php index 500bd3f..aea9ea8 100644 --- a/workbench/app/PositiveSpecification.php +++ b/workbench/app/PositiveSpecification.php @@ -5,6 +5,7 @@ namespace Workbench\App; use Maartenpaauw\Specifications\CompositeSpecification; +use Override; /** * @extends CompositeSpecification @@ -14,6 +15,7 @@ final class PositiveSpecification extends CompositeSpecification /** * @inheritDoc */ + #[Override] public function isSatisfiedBy(mixed $candidate): bool { return true; diff --git a/workbench/app/UppercaseSpecification.php b/workbench/app/UppercaseSpecification.php index a511de6..5bb5991 100644 --- a/workbench/app/UppercaseSpecification.php +++ b/workbench/app/UppercaseSpecification.php @@ -5,6 +5,7 @@ namespace Workbench\App; use Maartenpaauw\Specifications\CompositeSpecification; +use Override; /** * @extends CompositeSpecification @@ -14,6 +15,7 @@ final class UppercaseSpecification extends CompositeSpecification /** * @inheritDoc */ + #[Override] public function isSatisfiedBy(mixed $candidate): bool { return mb_strtoupper($candidate) === $candidate;