beeralex / validator
A validation library for arrays with various value types.
Installs: 7
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/beeralex/validator
Requires
- php: >=8.0
This package is auto-updated.
Last update: 2025-10-23 06:21:24 UTC
README
Эта библиотека предоставляет собой простую реализацию валидатора.
Установка:
composer require beeralex/validator:dev-main
Как использовать
Для использования валидатора создайте класс, наследующийся от \Validator\Validator, и реализуйте метод rules, описывающий правила валидации. Каждое правило разделяется символом '|'.
protected function rules() : array { return [ 'name' => 'required|string|min:2|max:30', 'email' => 'email', 'age' => 'nullable|integer', ]; }
Пользовательские сообщения об ошибках
Вы также можете создать пользовательские сообщения об ошибках для каждого правила с помощью метода messages:
protected function messages(): array { return [ 'name.required' => 'Имя обязательный параметр', 'name.min' => 'Имя должно быть не короче 2 символов', 'email.required' => 'Email обязательный параметр', 'email.email' => 'Email должен быть валидным', ]; }
Стандартные правила
array- Проверяет, является ли значение массивом.boolean- Проверяет, является ли значение логическим значением.email- Проверяет, является ли значение валидным email.float- Проверяет, является ли значение числом с плавающей точкой (целое число вернет false).in- Ищет значение в массиве. Если значение не массив, то вернет false.integer- Проверяет, является ли значение целым числом (числовая строка или число с плавающей точкой вернут false).max:{param}- Проверяет, является ли длина строки больше или равна переданному параметру. Если значение не строка, то вернется false.min:{param}- Проверяет, является ли длина строки меньше или равна переданному параметру. Если значение не строка, то вернется false.nullable- Значение может быть необязательным.numeric- Проверяет, является ли значение числом или числовой строкой.required- Значение обязательно. При этом если поле и required и nullable, то nullable будет проигнорировано.string- Проверяет, является ли значение строкой (пустая строка также вернет true).
Пользовательские правила
Пользовательские правила должны наследоваться от класса Validator\Rules\Rule, а добавить их можно с помощью метода userRules который нужно переопределить в вашем класса валидатора, этот метод должен вернуть объект класса Validator\RegistryCustomRules. Используйте метод addRule который параметром принимает полное имя класса.
protected function userRules() : ?RegistryUserRules { return (new RegistryUserRules)->addRule(TestRule::class); }
Имя класса правила должно заканчиваться на Rule (TestRule), таким образом имя правила будет сформировано из названия класса и получиться test, слово Rule в названии обрезается. Или же переопределите статический метод getRuleName, которое должно вернуть имя этого правила.
Имя пользовательского правила должно быть уникальным и не совпадать со стандартными правилами. Теперь имя, возвращаемое методом getRuleName, можно использовать при формировании правила в методе rules. Если передаете параметр через двоеточие, то самостоятельно реализуйте конструктор в своем классе правила, значение будет передано.
namespace Validator\Test; class TestRule extends \Validator\Rules\Rule { public function validate($value) : bool { return false; } public function getMessage(): string { return 'test сustom rule message'; } public static function getRuleName() : string { return 'newTestRuleName'; } }
Пример использования
Для валидации массива создайте экземпляр класса валидатора. Конструктор принимает массив, значения которого будут проверяться.
$validator = new UserValidator([ 'name' => 'имя', 'email' => 'email@email.com', 'age' => 33, ]);
Для валидации используйте метод validate, который возвращает логическое значение:
$validator->validate();
Для получения сообщений об ошибках используйте метод errors:
$validator->errors();
Для получения массива отвалидированных значений используйте метод validated:
$validator->validated();
class UserValidator extends \Validator\Validator { protected function rules() : array { return [ 'name' => 'required|string|min:2|max:30', 'email' => 'email|newTestRuleName', 'age' => 'nullable|integer', ]; } protected function messages(): array { return [ 'name.required' => 'Имя обязательный параметр', 'name.min' => 'Имя должно быть не короче 2 символов', 'email.required' => 'Email обязательный параметр', 'email.email' => 'Email должен быть валидным', 'email.newTestRuleName' => 'Новое сообщение для newTestRuleName' ]; } protected function userRules() : ? \Validator\RegistryUserRules { return (new \Validator\RegistryUserRules)->addRule(TestRule::class); } }