Что такое Respect\Validation?
Respect\Validation — это мощная и выразительная библиотека для валидации данных на PHP. Она позволяет строить сложные правила проверки с помощью цепочек методов, что делает код чистым и читаемым. Библиотека поддерживает более 60 встроенных правил (от проверки email до валидации CPF/CNPJ) и легко расширяется пользовательскими правилами.
Зачем нужна валидация?
Валидация данных — критический этап обработки пользовательского ввода, API-запросов или данных из внешних источников. Без неё приложение уязвимо для:
- SQL-инъекций и XSS-атак
- Некорректных данных, вызывающих ошибки
- Нарушения бизнес-логики
Respect\Validation решает эти проблемы, предоставляя единый интерфейс для фильтрации и проверки.
Установка
Установите библиотеку через Composer:
composer require respect/validationПосле установки подключите автозагрузчик и используйте пространство имён:
require 'vendor/autoload.php';
use Respect\Validation\Validator as v;Основные функции
Библиотека предлагает:
- Цепочки правил:
v::alnum()->noWhitespace()->length(5, 20)->validate($input) - Кастомные сообщения об ошибках:
v::email()->setName('Email')->assert($input) - Групповую валидацию:
v::attribute('name', v::stringType())->attribute('age', v::intVal()) - Необязательные поля и условные правила (например, проверка только если поле присутствует).
Пример кода на PHP
Простая валидация формы регистрации:
<?php
require 'vendor/autoload.php';
use Respect\Validation\Validator as v;
$data = [
'username' => 'john_doe',
'email' => 'john@example.com',
'password' => 'secret123',
'age' => 25
];
$usernameValidator = v::alnum()->noWhitespace()->length(4, 20);
$emailValidator = v::email();
$passwordValidator = v::length(8, 64);
$ageValidator = v::intVal()->between(18, 120);
try {
$usernameValidator->setName('Username')->assert($data['username']);
$emailValidator->setName('Email')->assert($data['email']);
$passwordValidator->setName('Password')->assert($data['password']);
$ageValidator->setName('Age')->assert($data['age']);
echo 'Все данные валидны!';
} catch (\Respect\Validation\Exceptions\NestedValidationException $e) {
echo implode('<br>', $e->getMessages());
}Результат при ошибке: "Username must contain only letters and digits" и т.д.
Когда использовать
- Формы на сайтах — регистрация, обратная связь, заказ
- REST API — проверка JSON-запросов перед обработкой
- Импорт данных — валидация CSV/Excel перед записью в БД
- Командные скрипты — проверка аргументов CLI
Respect\Validation подходит для проектов любого размера — от простых сайтов до фреймворков (Laravel, Symfony). Она заменяет громоздкие if-else конструкции и упрощает тестирование.