[news] Validator 1.0


The first stable version of yiisoft/validator was released.
This package allows to check data in any format - arrays, objects, scalar values, etc. An example for the case when
data is an object:
use Yiisoft\Validator\Rule\AtLeast;
use Yiisoft\Validator\Rule\Email;
use Yiisoft\Validator\Rule\Length;
use Yiisoft\Validator\Rule\Number;
use Yiisoft\Validator\Rule\Required;
use Yiisoft\Validator\Validator;

#[AtLeast(['email', 'phone'])]
final class Person
{
public function __construct(
#[Required]
#[Length(min: 2)]
public ?string $name = null,

#[Number(min: 21)]
public ?int $age = null,

#[Email]
public ?string $email = null,

public ?string $phone = null,
) {
}
}

$person = new Person(
name: 'John',
age: 17,
email: 'john@example.com',
phone: null
);

$result = (new Validator())->validate($person);

The validation result is an object that allows to check whether validation was successful:
$result->isValid();

It also contains errors occurred during validation:
$result->getErrorMessages();

Other features include:

  • Supports custom data sets.
  • Handles nested data structures (one-to-one and one-to-many).
  • Supports PHP 8 attributes.
  • Error message formatting and translation.
  • Attribute names translation.
  • Conditional validation:
    • Skip validation of "empty" value with possibility to configure "empty" condition.
    • Skip further validation if an error occurred for the same attribute.
    • Skip validation depending on a condition.
  • Possibility to use context in rule handler.
  • Common rules bundled.
  • Supports DI container for creating custom rule handlers with extra dependencies.
  • Exporting rules options for using in the frontend.

See README and
guide for more details.