Вот решил написать сегодня 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);» запрещает вываливание всех ошибок в браузер пользователю.

Ну на этом вроде сказал все что хотел, спасибо за внимание!