respect-validation/docs/validators/All.md
Alexandre Gomes Gaigalas bcc60ec035 Allow empty values in iterables for All, Each, Max, Min
Now empty values are again allowed in FilteredArray-style
validators.

To solve the issue with negation, a Result attribute was
added to signal indeciseveness (when a result cannot be
reliably inverted). On such cases, we consider that result
to be valid.

For example, `v::not(v::min(v::equals(10)))` says "The
lowest value of the iterable input should not be equal 10".

If the input is empty, we cannot decide whether its minimum
is equal to 10 or not, so the validator essentially becomes
a null-op.

Users that want to ensure these validators have a valid
decidable target must use it in combination with `Length`
or other similar validators to achieve the same result.
2026-01-30 21:27:16 +00:00

1.9 KiB

All

  • All(Validator $validator)

Validates all items of the input against a given validator.

$releaseDates = [
    'validation' => '2010-01-01',
    'template'   => '2011-01-01',
    'relational' => '2011-02-05',
];

v::all(v::dateTime())->assert($releaseDates);
// Validation passes successfully

This validator is similar to Each, but while Each displays a message for each of the failed entries, All will display a single message generic to all failed entries instead.

v::all(v::startsWith('2010'))->assert($releaseDates);
// → Every item in `["validation": "2010-01-01", "template": "2011-01-01", "relational": "2011-02-05"]` must start with "2010"

v::named('Release Dates', v::all(v::startsWith('2010')))->assert($releaseDates);
// → Every item in Release Dates must start with "2010"

Note

This validator will pass if the input is empty. Use Length with [GreaterThan][GreaterThan.md] to perform a stricter check:

v::all(v::equals(10))->assert([]);
// Validation passes successfully

v::length(v::greaterThan(0))->all(v::equals(10))->assert([]);
// → The length of `[]` must be greater than 0

Templates

All::TEMPLATE_STANDARD

Mode Template
default Every item in
inverted Every item in

Template as prefix

The template serves as a prefix to the template of the inner validator.

v::all(v::floatType())->assert([1.5, 2]);
// → Every item in `[1.5, 2]` must be float

v::not(v::all(v::intType()))->assert([1, 2, -3]);
// → Every item in `[1, 2, -3]` must not be an integer

Categorization

  • Comparisons
  • Transformations

Changelog

Version Description
3.0.0 Created

See Also