Компонент Validator

Компонент Validator

Компонент Validator предоставляет инструменты для валидации значений, следуя спецификации валидации JSR-303 Bean.

Установка

1
$ composer require symfony/validator

Также вы можете клонировать репозиторий https://github.com/symfony/validator.

Note

Если вы устанавливаете этот компонент вне приложения Symfony, вам нужно подключить файл vendor/autoload.php в вашем коде для включения механизма автозагрузки классов, предоставляемых Composer. Детальнее читайте в этой статье.

Использование

See also

Эта статья объясняет как использовать функции Validator как независимого компонента в любом приложении PHP. Прочитайте статью Валидация для понимания как использовать его в приложениях Symfony.

Поведение компонента Validator основывается на двух концептах:

  • Ограничения (Constraints), которые определяют правила, которые нужно валидировать;
  • Валидаторы, которые являются классами, содержащими саму логику валидации.

Следующий пример показывает, как валидировать, чтобы строка была как минимум 10 символов в длину:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use Symfony\Component\Validator\Validation;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\NotBlank;

$validator = Validation::createValidator();
$violations = $validator->validate('Bernhard', array(
    new Length(array('min' => 10)),
    new NotBlank(),
));

if (0 !== count($violations)) {
    // есть ошибки, теперь вы можете их отобразить
    foreach ($violations as $violation) {
        echo $violation->getMessage().'<br>';
    }
}

Валидатор возвращает список нарушений.

Извлечение экземпляра валидатора

Класс Validator - это главная точка доступа компонента Валидатор. Чтобы создать новый экземпляр этого класса, рекомендуется использовать класс Validation:

1
2
3
use Symfony\Component\Validator\Validation;

$validator = Validation::createValidator();

Этот объект $validator может валидировать простые переменные вроде строк, чисел и массивов, но не может валидировать объекты. Чтобы сделать это, сконфигурируйте класс Validator так, как объясняется в следующих разделах.