Перейти к содержанию

ValidationException

Описание: Исключение для ошибок валидации данных Специализированное исключение для обработки ошибок валидации с поддержкой множественных ошибок и детальной диагностики. Используется для валидации входных данных, параметров API и моделей данных.

С версии: 1.0.0

Версия: 1.0.0

Пример:

PHP
1
2
3
4
5
6
7
8
try {
$movie = Movie::fromArray($data);
$movie->validate();
} catch (ValidationException $e) {
foreach ($e->getErrors() as $field => $error) {
echo "Поле {$field}: {$error}\n";
}
}

См. также:

  • \KinopoiskDev\Services\ValidationService: Сервис валидации
  • \KinopoiskDev\Attributes\Validation: Атрибут валидации

__construct()

Описание: Конструктор исключения валидации Создает новый экземпляр исключения валидации с указанными параметрами. Поддерживает как одиночные ошибки для конкретного поля, так и множественные ошибки для нескольких полей.

Параметры:

  • $message (string): Основное сообщение об ошибке
  • $field (string|null): Поле, вызвавшее ошибку
  • $value (mixed): Значение, не прошедшее валидацию
  • $code (int): Код ошибки (по умолчанию 0)
  • $previous (Throwable|null): Предыдущее исключение в цепочке

Пример:

PHP
1
2
3
4
5
6
throw new ValidationException(
'Ошибка валидации фильма',
['title' => 'Название обязательно', 'year' => 'Год должен быть положительным'],
'title',
null
);

forField()

Описание: Создает исключение для конкретного поля Фабричный метод для создания исключения валидации для одного конкретного поля с указанным сообщением об ошибке.

Параметры:

  • $field (string): Название поля, вызвавшего ошибку
  • $message (string): Сообщение об ошибке валидации
  • $value (mixed): Значение поля, не прошедшее валидацию

Возвращает: self Экземпляр исключения валидации

Пример:

PHP
1
2
3
4
5
throw ValidationException::forField(
'email',
'Неверный формат email адреса',
'invalid-email'
);

withErrors()

Описание: Создает исключение для множественных ошибок Фабричный метод для создания исключения валидации с множественными ошибками для разных полей.

Возвращает: self Экземпляр исключения валидации

Пример:

PHP
1
2
3
4
5
6
$errors = [
'title' => 'Название обязательно',
'year' => 'Год должен быть положительным',
'rating' => 'Рейтинг должен быть от 0 до 10'
];
throw ValidationException::withErrors($errors);

getErrors()

Описание: Возвращает список всех ошибок валидации Возвращает ассоциативный массив, где ключи - названия полей, а значения - сообщения об ошибках валидации.

Возвращает: array<string, string> Массив ошибок в формате ['field' => 'error_message']

Пример:

PHP
$errors = $exception->getErrors();
// Результат: ['title' => 'Название обязательно', 'year' => 'Год должен быть положительным']

getField()

Описание: Возвращает поле, вызвавшее ошибку Возвращает название поля, которое не прошло валидацию. Может быть null, если ошибка не связана с конкретным полем.

Возвращает: string|null Название поля или null

Пример:

PHP
$field = $exception->getField();
// Результат: 'title' или null

getValue()

Описание: Возвращает значение, не прошедшее валидацию Возвращает значение, которое вызвало ошибку валидации. Полезно для диагностики и отладки проблем валидации.

Возвращает: mixed Проблемное значение

Пример:

PHP
$value = $exception->getValue();
// Результат: null, пустая строка, отрицательное число и т.д.

getFirstError()

Описание: Возвращает первую ошибку валидации Возвращает текст первой ошибки из списка ошибок валидации. Полезно для быстрого отображения основной проблемы.

Возвращает: string|null Текст первой ошибки или null, если ошибок нет

Пример:

PHP
$firstError = $exception->getFirstError();
// Результат: 'Название обязательно' или null

hasErrors()

Описание: Проверяет, есть ли ошибки валидации Удобный метод для проверки наличия ошибок валидации без необходимости проверки размера массива ошибок.

Возвращает: bool True если есть ошибки, false если ошибок нет

Пример:

PHP
1
2
3
if ($exception->hasErrors()) {
// Обработка ошибок
}