2023-02-22 1844次浏览

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.