Вот решил написать сегодня 6 урок нашего курса PHP-программирования. И мы с вами сегодня посмотрим урок по ошибкам которые могут возникать во время программирования.
Это нормально. Без ошибок в PHP ни кто не пишет. PHP в этом случае пытается, хотя надо признать, что не всегда у него это получается, подсказать где случилась та или иная ошибка, какого она уровня, в каком файле и на какой строчке кода.
Самая популярная ошибка в PHP — это когда мы, например, не поставили ( ; ) в конце выражения:
<?php $user_name = "Martin"; echo $user_name; unset($user_name) echo $user_name; ?>
Соответственно вылетит такое предупреждение в браузер:
Parse error: syntax error, unexpected T_ECHO, expecting ‘;’ in C:\Program Files\Apache Group\Apache\htdocs\test.php on line 5.
Обратите внимание, многие ошибки в PHP с которыми мы будем сталкиваться говорят нам конкретно, где и что произошло. В данном случае в этом сообщении говорится, что у меня произошла ошибка на строке под номером 5. Но на самом деле точка с запятой у меня пропущена в строке под номером 4. Мы раньше говорили, что PHP пропускает пробелы и перевод строки, и поэтому он начал читать строку номер 4, здесь у него все в порядке, он не видит конца, переходит к следующей строке и вот здесь он уже видит бардак. Т.е. на этой строчке под номером 5 он заметил ошибку и поэтому выдал эту строку.
Правило номер 1 — когда мы не видим ошибки на той строке, которую PHP нам выдал, нужно поднять глаза чуть выше.
Правило номер 2 — очень часто мы можем получить много ошибок в PHP, но на самом деле ошибка одна, она просто потянула за собой целую кучу, т.е. из-за нее одной случилось много. Поэтому всегда ошибки в PHP проверять нужно не снизу, а сверху вниз. И как правило исправив одну ошибку, исправляются все остальные.
Давайте еще немного разберем что же нам PHP подсказывает в этой ошибке, которую мы получили:
Parse error: syntax error, unexpected T_ECHO, expecting ‘;’ in C:\Program Files\Apache Group\Apache\htdocs\test.php on line 5.
В данном случае PHP напоролся на строке, где было написано ECHO, поэтому он нам выдал — «произошла синтаксическая ошибка, (unexpected T_ECHO) «. Вот это unexpected что-то, может быть абсолютно разным. Сейчас попробую вам показать, что кроме «unexpected T_ECHO» мы можем получить кое-что еще.
Вот например такая ошибка:
<?php $a $user_name = "Martin"; echo $user_name; unset($user_name); echo $user_name; ?>
В этом случае PHP выдает нам:
Parse error: syntax error, unexpected T_VARIABLE in C:\Program Files\Apache Group\Apache\htdocs\test.php on line 3.
В этом примере ошибка «unexpected T_VARIABLE», потому что он напоролся на присваивании значения переменной.
Ошибка «unexpected что-то», как мы видим может варьироваться. Но, будьте внимательны, если у вас возникает ошибочка «syntax error, unexpected что-то», то в 99% случаев это пропущенная точка с запятой.
Теперь давайте поговорим про уровни ошибок в PHP. Их несколько, но знать нам нужно, то что их четыре штуки.
Первый уровень ошибок — это PARSE ERROR.
Это то, что мы сейчас получили. Бояться ее не надо. Итак, что же она означает? А означает она то, что когда PHP получает код он его парсит, т.е. он его проверяет на наличие ошибок, при этом сам код еще не начинает выполняться. К примеру, мы отдали книгу корректору и он начинает ее проверять, но еще не один листок не был напечатан. Как только корректор проверит и скажет что все в порядке, книга будет печататься. Здесь то же самое.
Второй и третий уровень ошибок — это или FATAL ERROR и WARNING.
Что они означают? Когда PHP проверил код, но еще не запускал его, т.е. никаких синтаксических ошибок нет, то во втором уровне он его запускает. Вот тут он может столкнуться с такой проблемой, что например мы открыли файл, которого нет. Т.е. получается, что с точки зрения синтаксиса все верно, но какой-то участок кода может не работать. Вот тут как раз и возникает второй уровень ошибок в PHP. В чем разница между FATAL ERROR и WARNING? Разница в том, что при FATAL ERROR нам вывалится это ошибка и код закончится, т.е. он прекратит свою работу. А WARNING — это просто предупреждение. PHP так же вывалит нам эту ошибку, но код продолжит свою работу.
Четвертый уровень ошибок — это NOTICE.
Это самая простая ошибка в PHP или, я бы даже назвал ее просто предупреждение. В данном случае PHP говорит нам, что здесь мы забыли «посмотреть направо» или «посмотреть налево». Т.е. это такой легкий уровень предупреждения о чем-то мало значимом c одной стороны, а с другой стороны, я советую обращать внимание на подобного рода ошибки, если вы хотите идеально «вылизанный» код.
Совет: при отладке кода, всегда включайте все эти уровни ошибок, но только при отладке кода. В любом другом случае их надо отключать. Потому что пользователю абсолютно не нужны все эти вылетающие WARNING, FATAL, NOTICE. Они нужны только нам, разработчикам.
Как включать и отключать эти ошибки в PHP? По умолчанию они все включены, кроме NOTICE. Но я советую перед каждым кодом делать такую запись:
<?php error_reporting(E_ALL); какой-то код; ?>
Эта запись «error_reporting(E_ALL);» выводит в браузер все ошибки PHP включая NOTICE.
После того, как вы «вылизали» свой код все эти предупреждения нужно отключить:
<?php error_reporting(0); какой-то код; ?>
Эта запись «error_reporting(0);» запрещает вываливание всех ошибок в браузер пользователю.
Ну на этом вроде сказал все что хотел, спасибо за внимание!