Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion docs/migrating-from-v2-to-v3.md
Original file line number Diff line number Diff line change
Expand Up @@ -552,7 +552,6 @@ Base classes available in `Respect\Validation\Validators\Core`:

- `Simple` - For validators with simple boolean logic
- `Wrapper` - For validators that wrap another validator
- `Composite` - For validators that combine multiple validators
- `Envelope` - For validators that modify how another validator works

---
Expand Down
11 changes: 9 additions & 2 deletions src/Validators/AllOf.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
use Respect\Validation\Message\Template;
use Respect\Validation\Result;
use Respect\Validation\Validator;
use Respect\Validation\Validators\Core\Composite;

use function array_filter;
use function array_map;
Expand All @@ -36,11 +35,19 @@
'{{subject}} must pass all the rules',
self::TEMPLATE_ALL,
)]
final class AllOf extends Composite
final readonly class AllOf implements Validator
{
public const string TEMPLATE_ALL = '__all__';
public const string TEMPLATE_SOME = '__some__';

/** @var non-empty-array<Validator> */
private readonly array $validators;

public function __construct(Validator $validator1, Validator $validator2, Validator ...$validators)
{
$this->validators = [$validator1, $validator2, ...$validators];
}

public function evaluate(mixed $input): Result
{
$children = array_map(static fn(Validator $validator) => $validator->evaluate($input), $this->validators);
Expand Down
11 changes: 9 additions & 2 deletions src/Validators/AnyOf.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
use Respect\Validation\Message\Template;
use Respect\Validation\Result;
use Respect\Validation\Validator;
use Respect\Validation\Validators\Core\Composite;

use function array_map;
use function array_reduce;
Expand All @@ -28,8 +27,16 @@
'{{subject}} must pass at least one of the rules',
'{{subject}} must pass at least one of the rules',
)]
final class AnyOf extends Composite
final readonly class AnyOf implements Validator
{
/** @var non-empty-array<Validator> */
private readonly array $validators;

public function __construct(Validator $validator1, Validator $validator2, Validator ...$validators)
{
$this->validators = [$validator1, $validator2, ...$validators];
}

public function evaluate(mixed $input): Result
{
$children = array_map(static fn(Validator $validator) => $validator->evaluate($input), $this->validators);
Expand Down
12 changes: 10 additions & 2 deletions src/Validators/Circuit.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,19 @@

use Attribute;
use Respect\Validation\Result;
use Respect\Validation\Validators\Core\Composite;
use Respect\Validation\Validator;

#[Attribute(Attribute::TARGET_PROPERTY | Attribute::TARGET_CLASS | Attribute::IS_REPEATABLE)]
final class Circuit extends Composite
final readonly class Circuit implements Validator
{
/** @var non-empty-array<Validator> */
private readonly array $validators;

public function __construct(Validator $validator1, Validator $validator2, Validator ...$validators)
{
$this->validators = [$validator1, $validator2, ...$validators];
}

public function evaluate(mixed $input): Result
{
foreach ($this->validators as $validator) {
Expand Down
32 changes: 0 additions & 32 deletions src/Validators/Core/Composite.php

This file was deleted.

12 changes: 10 additions & 2 deletions src/Validators/NoneOf.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
use Attribute;
use Respect\Validation\Message\Template;
use Respect\Validation\Result;
use Respect\Validation\Validators\Core\Composite;
use Respect\Validation\Validator;

use function count;

Expand All @@ -32,11 +32,19 @@
'{{subject}} must pass all the rules',
self::TEMPLATE_ALL,
)]
final class NoneOf extends Composite
final readonly class NoneOf implements Validator
{
public const string TEMPLATE_ALL = '__all__';
public const string TEMPLATE_SOME = '__some__';

/** @var non-empty-array<Validator> */
private readonly array $validators;

public function __construct(Validator $validator1, Validator $validator2, Validator ...$validators)
{
$this->validators = [$validator1, $validator2, ...$validators];
}

public function evaluate(mixed $input): Result
{
$failedCount = 0;
Expand Down
11 changes: 9 additions & 2 deletions src/Validators/OneOf.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
use Respect\Validation\Message\Template;
use Respect\Validation\Result;
use Respect\Validation\Validator;
use Respect\Validation\Validators\Core\Composite;

use function array_filter;
use function array_map;
Expand All @@ -38,11 +37,19 @@
'{{subject}} must pass only one of the rules',
self::TEMPLATE_MORE_THAN_ONE,
)]
final class OneOf extends Composite
final readonly class OneOf implements Validator
{
public const string TEMPLATE_NONE = '__none__';
public const string TEMPLATE_MORE_THAN_ONE = '__more_than_one__';

/** @var non-empty-array<Validator> */
private readonly array $validators;

public function __construct(Validator $validator1, Validator $validator2, Validator ...$validators)
{
$this->validators = [$validator1, $validator2, ...$validators];
}

public function evaluate(mixed $input): Result
{
$children = array_map(static fn(Validator $validator) => $validator->evaluate($input), $this->validators);
Expand Down
22 changes: 0 additions & 22 deletions tests/src/Validators/Core/ConcreteComposite.php

This file was deleted.

34 changes: 0 additions & 34 deletions tests/unit/Validators/Core/CompositeTest.php

This file was deleted.