From e84d15f4e4496625bd2a7e0cfa37afb70fee1358 Mon Sep 17 00:00:00 2001 From: Henrique Moody Date: Fri, 6 Feb 2026 18:00:01 +0100 Subject: [PATCH] Rename Composite to LogicalComposite Rename the Composite class to LogicalComposite to more accurately reflect its purpose as a validator that combines child validators using logical operations (AND, OR, NAND, XOR). This better naming also opens the door for additional composite patterns beyond logical operations, enabling future validator compositions. Assisted-by: OpenCode (GLM 4.5) --- src/Validators/AllOf.php | 4 ++-- src/Validators/AnyOf.php | 4 ++-- src/Validators/Core/{Composite.php => LogicalComposite.php} | 2 +- src/Validators/NoneOf.php | 4 ++-- src/Validators/OneOf.php | 4 ++-- .../{ConcreteComposite.php => ConcreteLogicalComposite.php} | 4 ++-- tests/unit/Validators/Core/CompositeTest.php | 6 +++--- 7 files changed, 14 insertions(+), 14 deletions(-) rename src/Validators/Core/{Composite.php => LogicalComposite.php} (93%) rename tests/src/Validators/Core/{ConcreteComposite.php => ConcreteLogicalComposite.php} (79%) diff --git a/src/Validators/AllOf.php b/src/Validators/AllOf.php index 234a9693f..75701b6cc 100644 --- a/src/Validators/AllOf.php +++ b/src/Validators/AllOf.php @@ -19,7 +19,7 @@ use Respect\Validation\Message\Template; use Respect\Validation\Result; use Respect\Validation\Validator; -use Respect\Validation\Validators\Core\Composite; +use Respect\Validation\Validators\Core\LogicalComposite; use Respect\Validation\Validators\Core\ShortCircuitable; use function array_filter; @@ -38,7 +38,7 @@ '{{subject}} must pass all the rules', self::TEMPLATE_ALL, )] -final class AllOf extends Composite implements ShortCircuitable +final class AllOf extends LogicalComposite implements ShortCircuitable { use CanEvaluateShortCircuit; diff --git a/src/Validators/AnyOf.php b/src/Validators/AnyOf.php index 61ac0a3bc..de9b8aadd 100644 --- a/src/Validators/AnyOf.php +++ b/src/Validators/AnyOf.php @@ -19,7 +19,7 @@ use Respect\Validation\Message\Template; use Respect\Validation\Result; use Respect\Validation\Validator; -use Respect\Validation\Validators\Core\Composite; +use Respect\Validation\Validators\Core\LogicalComposite; use Respect\Validation\Validators\Core\ShortCircuitable; use function array_map; @@ -30,7 +30,7 @@ '{{subject}} must pass at least one of the rules', '{{subject}} must pass at least one of the rules', )] -final class AnyOf extends Composite implements ShortCircuitable +final class AnyOf extends LogicalComposite implements ShortCircuitable { use CanEvaluateShortCircuit; diff --git a/src/Validators/Core/Composite.php b/src/Validators/Core/LogicalComposite.php similarity index 93% rename from src/Validators/Core/Composite.php rename to src/Validators/Core/LogicalComposite.php index 86af8111c..89131bb5a 100644 --- a/src/Validators/Core/Composite.php +++ b/src/Validators/Core/LogicalComposite.php @@ -15,7 +15,7 @@ use function array_merge; -abstract class Composite implements Validator +abstract class LogicalComposite implements Validator { /** @var non-empty-array */ protected readonly array $validators; diff --git a/src/Validators/NoneOf.php b/src/Validators/NoneOf.php index 223f92dab..e0838ce87 100644 --- a/src/Validators/NoneOf.php +++ b/src/Validators/NoneOf.php @@ -18,7 +18,7 @@ use Respect\Validation\Helpers\CanEvaluateShortCircuit; use Respect\Validation\Message\Template; use Respect\Validation\Result; -use Respect\Validation\Validators\Core\Composite; +use Respect\Validation\Validators\Core\LogicalComposite; use Respect\Validation\Validators\Core\ShortCircuitable; use function count; @@ -34,7 +34,7 @@ '{{subject}} must pass all the rules', self::TEMPLATE_ALL, )] -final class NoneOf extends Composite implements ShortCircuitable +final class NoneOf extends LogicalComposite implements ShortCircuitable { use CanEvaluateShortCircuit; diff --git a/src/Validators/OneOf.php b/src/Validators/OneOf.php index d5489e5ba..11c871130 100644 --- a/src/Validators/OneOf.php +++ b/src/Validators/OneOf.php @@ -20,7 +20,7 @@ use Respect\Validation\Message\Template; use Respect\Validation\Result; use Respect\Validation\Validator; -use Respect\Validation\Validators\Core\Composite; +use Respect\Validation\Validators\Core\LogicalComposite; use Respect\Validation\Validators\Core\ShortCircuitable; use function array_filter; @@ -40,7 +40,7 @@ '{{subject}} must pass only one of the rules', self::TEMPLATE_MORE_THAN_ONE, )] -final class OneOf extends Composite implements ShortCircuitable +final class OneOf extends LogicalComposite implements ShortCircuitable { use CanEvaluateShortCircuit; diff --git a/tests/src/Validators/Core/ConcreteComposite.php b/tests/src/Validators/Core/ConcreteLogicalComposite.php similarity index 79% rename from tests/src/Validators/Core/ConcreteComposite.php rename to tests/src/Validators/Core/ConcreteLogicalComposite.php index 0ffe9861e..11d480062 100644 --- a/tests/src/Validators/Core/ConcreteComposite.php +++ b/tests/src/Validators/Core/ConcreteLogicalComposite.php @@ -12,9 +12,9 @@ namespace Respect\Validation\Test\Validators\Core; use Respect\Validation\Result; -use Respect\Validation\Validators\Core\Composite; +use Respect\Validation\Validators\Core\LogicalComposite; -final class ConcreteComposite extends Composite +final class ConcreteLogicalComposite extends LogicalComposite { public function evaluate(mixed $input): Result { diff --git a/tests/unit/Validators/Core/CompositeTest.php b/tests/unit/Validators/Core/CompositeTest.php index cc988828e..9e6539390 100644 --- a/tests/unit/Validators/Core/CompositeTest.php +++ b/tests/unit/Validators/Core/CompositeTest.php @@ -15,18 +15,18 @@ use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\Attributes\Test; use Respect\Validation\Test\TestCase; -use Respect\Validation\Test\Validators\Core\ConcreteComposite; +use Respect\Validation\Test\Validators\Core\ConcreteLogicalComposite; use Respect\Validation\Test\Validators\Stub; #[Group('core')] -#[CoversClass(Composite::class)] +#[CoversClass(LogicalComposite::class)] final class CompositeTest extends TestCase { #[Test] public function itShouldReturnItsChildren(): void { $expected = [Stub::daze(), Stub::daze(), Stub::daze()]; - $sut = new ConcreteComposite(...$expected); + $sut = new ConcreteLogicalComposite(...$expected); $actual = $sut->getValidators(); self::assertCount(3, $actual);