Вывод ошибок разных уровней в PHP

PHP - это достаточно свободный язык программирования, и это, на мой взгляд, большой минус. Главным недостатком здесь является то, что некоторые конструкции, которые в других языках сразу же отключат выполнение программы, в PHP является нормой и вполне допустимыми. Но если Вы хотите писать код изначально грамотно, то Вам необходимо знать о том, как выводить ошибки разных уровней.
В PHP есть несколько уровней ошибок, которые представлены в таблице ниже:
E_WARNING | Различного рода предупреждения. Например, если функция требует 3 параметра, а Вы передаёте только 2, то будет как раз ошибка уровня E_WARNING. |
E_NOTICE | Примерно то же самое, что и E_WARNING, но ошибки это очень мелкие, и они лишь могут стать причиной ошибок в будущем. Пример: использование неинициализированной переменной. Могу сказать, что данный уровень ошибок встречается практически в каждом мало-мальски сложном скрипте. |
E_DEPRECATED | Данный уровень ошибок возникает при использовании устаревших конструкций, например, при вызове какой-нибудь старой функции. |
E_PARSE | Ошибка синтаксического характера. Например, забыли поставить круглую скобку. |
E_ERROR | Ошибка, которая нам хорошо знакома. Как правило, мы её видем чаще всего. Самый простой пример - это вызов несуществующей функции. |
E_ALL | Все ошибки. |
На большинстве серверов стоит вывод ошибок уровня E_WARNING, E_PARSE и E_ERROR. То есть очень грубые замечания и фатальные ошибки. Если Вы хотите программировать профессионально, то контроль только таких ошибок не достаточен.
Я рекомендую на этапе создания проекта включать вывод уровня ошибок E_ALL. Сделать это очень просто:
<?php
error_reporting(E_ALL);
?>
И так нужно писать перед началом каждого скрипта. Если данный способ сильно не удобен, и Вы имеете доступ к php.ini, то в этом файле найдите директиву error_reporting и поставьте у неё значение E_ALL.
Если Вы с выводом такого уровня ошибок в PHP напишите код без единого замечания, то, значит, Вы создали, как минимум, неплохой продукт. Когда будете выкладывать уже на хостинг, то рекомендую данный уровень ошибок стереть, чтобы они не появлялись время от времени. Ведь PHP тоже обновляется и сегодня новые конструкции завтра могут уже устареть. И чтобы не вызывать ошибку уровня E_DEPRECATED, рекомендую отключать отображение подобных ошибок.
-
-
Михаил Русаков
Комментарии (5):
Отличная статья! Давно искал толковое объяснение. Спасибо.
Ответить
E_ALL | E_STRICT
Ответить
Есть вопрос: как сообщения об ошибках поместить в отдельный блок, чтобы вывести его в любом месте на странице по желанию (в Друпале так реализовано, например)? Я нашел статью http://doc.aceweb.ru/full_9_49_modered.html, но ее автору до Вашего, Миша, стиля изложения еще далеко ;) . Можете помочь советом?
Ответить
Напишу об этом статью через неделю где-то.
Ответить
Дай Вам Бог здоровья! Заранее благодарен!
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.