![]()
Функция trigger_error () в коде phpBB 3 используется повсеместно. Я решил в этой заметке сделать более подробный обзор этой функции.
Сегодня мы рассмотрим синтаксис, возможные параметры, а также примеры использования.
trigger_error () генерирует ошибки/предупреждения/замечания или непосредственно страницу с каким-нибудь сообщением, например, «Ваша тема была успешно создана».
Синтаксис
bool trigger_error ( string $error_msg [, int $error_type ] )
После выполнения данная функция завершает выполнение скрипта. Функция использует шаблон message_body.html при генерации ответа.
Параметры
error_msg
Сообщение об ошибке, которое будет возвращаться пользователю. Помните, что использовать напрямую вывод текстовых строк крайне нежелательно. Используйте языковые переменные.
error_type
Тип ошибки. По умолчанию установлено в E_USER_NOTICE. Может быть трех типов: E_USER_NOTICE, E_USER_WARNING, and E_USER_ERROR.
- E_USER_NOTICE — Используется в ситуациях, когда нужно сообщить пользователю какую либо информацию. Например, об успешном завершении авторизации. В администраторском аккаунте использование E_USER_NOTICE выводит зеленый информационный блок.
- E_USER_WARNING — Используется, когда нужно сообщить об ошибке. Для пользователей клиентской части сообщение выглядит точно так же, как и для E_USER_NOTICE. Но в администраторском аккаунте E_USER_WARNING выводит красный информационный блок.
- E_USER_ERROR — Должно использоваться только для серверных ошибок. Например, если сессия пользователя недоступна. Или если произошла ошибка SQL.
Примеры использования
Использование E_USER_NOTICE (пользовательской ошибки)
// Проверка какого-либо значения. if (!$email) { // Так делать нельзя. Лучше использовать языковые переменные. trigger_error('Вы не ввели e-mail адрес'); }
Использование E_USER_ERROR (серверной ошибки)
switch ($mode) { // Здесь какой-либо код... // default вызывается, если никакой вариант switch`а не подошел. // В нашем коде под этим подразумевается какая-либо ошибка, так как // при нормальном функционировании скрипта этого произойти не должно. default: // Сообщаем об ошибке, используя языковую переменную. // Используем E_USER_ERROR, так как это серъезная ошибка, и требует // вмешательства администратора. trigger_error($user->lang['NO_MODE'], E_USER_ERROR); break; }
Примечания
В phpBB 3 используется функция set_error_handler () для перехвата trigger_error ().
RSS