Уведомления
Среда выполнения часто выводит уведомления, встретив ошибочную ситуацию, с которой может справиться самостоятельно. Примером является использование неинициализированной переменной. Поскольку при выполнении операций с такими переменными РНР присваивает им значения по умолчанию, не возникает неисправимых ошибок, требующих прекращения выполнения сценария. Чтобы включить вывод сообщений об ошибках уровня в качестве аргумента функции можно указать константу E_N0TICE.
Ошибки ядра
Ошибки ядра генерирует ядро РНР. Функции, определенные пользователем, не должны генерировать сообщений на этих уровнях. Сообщения об ошибках уровня ядра выводятся, если указаны константы E_CORE_ERROR и E_CORE_WARNING.
Ошибки компиляции
На этих уровнях генерирует ошибки машина сценариев Zend. Так же как и ошибки уровня ядра, эти ошибки не должны генерироваться функциями, определенными пользователем. Ошибками уровня компиляции являются E_C0MPILE_ERR0R и E_COMPILE_WARNING, которые аналогичны EERR0R и E_WARNING, за исключением того, что их генерирует машина сценариев Zend.
Пользовательские уровни ошибок
Часто требуется, чтобы приложение генерировало ошибки на ином уровне, нежели перечисленные выше. Это выполняется с помощью пользовательских уровней ошибок. Пользовательские уровни ошибок - это E_USER_ERROR, E_USER_WARNING и E_USER_NOTICE. Они аналогичны EERROR, E_WARNING~h EJJ0TICE соответственно. Генерировать ошибки на этом уровне можно с помощью функции однако функции, определенные пользователем, не
должны генерировать ошибки на этих уровнях.
Установка уровней сообщений об ошибках
Хотя вывод сообщений об ошибках может быть полезен во время отладки, показывать сообщения об ошибках конечному пользователю может быть необязательно. Уровень сообщений об ошибках можно установить с помощью функции error_reporting(). Объявление функции следующее:
int error_reporting(int level);
Уровень level задается с помощью одной из описанных выше констант Е_. Можно установить одновременно несколько действующих уровней, объединяя константы с помощью поразрядного оператора &. Например, сообщения об ошибках уровней уведомления и предупреждений можно включить с помощью следующего вызова функции error_reporting():
error_reporting(E_WARNING & EJJOTICE);
Функция error_reporting() возвращает тот уровень сообщений, который был установлен до ее вызова. Это значение можно записать в переменную при изменении уровня сообщений об ошибках, чтобы позднее восстановить его. Чтобы включить вывод сообщений об ошибках всех уровней, можно воспользоваться константой E_ALL. Установка уровня в 0 отключает вывод любых сообщений об ошибках. Обычно правильное решение состоит в том, чтобы установить уровень сообщений об ошибках по максимуму (E_ALL) на этапе разработки, но дать ему значение 0 или другое существенно меньшее значение для рабочего продукта. При установке рабочего продукта ошибки должны корректно обрабатываться и записываться в журнал, а не отображаться. Следующей нашей темой будет обработка и регистрация ошибок.