Даже при разработке маленького сайта нужно отлаживать свой код и исправлять ошибки и баги. Без средств отладки обойтись у Вас никак не получится, разве что Вы ясновидящий и можете предсказать, где была допущена ошибка)))) Чтобы полноценно начать писать свой код, необходимо позаботится о выводах ошибок. Если Вы только начинащий программист, то обязательно должны сначала, хотя бы, ознакомится с системой отладки скриптов.
В php все ошибки деляться на такие основные категории:
Название | Описание | Число | Появление |
E_ALL | все виды ошибок и предупреждения (кроме, E_STRICT) | 2047 | |
E_ERROR | критические ошибки, которые приводят к остановке выполнения скрипта | 1 | |
E_WARNING | предупреждения (не являються критическими ошибками, означает что скрипт продолжает свою работу) | 2 | |
E_PARSE | ошибки компиляции при проверке кода скрипта перед его выполнением | 4 | |
E_NOTICE | уведомления во время выполнения скрипта (например, найден баг похожий на ошибку, но возможно он был допущен преднамерено и является рабочим кодом в следствие инициализации скрипта) | 8 | |
E_STRICT | уведомления во время выполнения скрипта по изменению кода для улучшения его интерпретации, например предупреждать Вас об использовании нежелательных (устаревших) функций | 2048 | PHP 5 |
E_CORE_ERROR | критические ошибки связаные непосредственно в самом PHP (например, отсутствуют файлы библиотеки) | 16 | PHP 4 |
E_CORE_WARNING | предупреждения связаные непосредственно с самим PHP, не критические ошибки (означает что скрипт продолжает свою работу) | 32 | PHP 4 |
E_COMPILE_ERROR | критические ошибки во время компиляции | 64 | PHP 4 |
E_COMPILE_WARNING | предупреждения во время компиляции, не критические ошибки (означает что скрипт продолжает свою работу) | 128 | PHP 4 |
E_USER_ERROR | пользовательские критические ошибки | 256 | PHP 4 |
E_USER_WARNING | пользовательские предупреждения | 512 | PHP 4 |
E_USER_NOTICE | пользовательские уведомления | 1024 | PHP 4 |
В php существует очень детальная и мощная система отладки, которую можно настроить как непосредственно в самом скрипте так и в настройках непосредсвенно самомого PHP.
Чтобы настроить отладку вывод ошибок в настройках php, Вам необходимо открыть файл php.ini (находится в корне каталога с установленым php) и найти в нем блок Error handling and logging. Чтобы включить показ ошибок на дисплее Вам необходимо раскомментировать следующие строки:
error_reporting = E_ALL & ~E_NOTICE | E_STRICT
, где E_ALL - выводим все ошибки,& - и, ~E_NOTICE | E_STRICT - пропускаем уведомления E_NOTICE или E_STRICT.
Для отладки php скриптов непосредственно в скриптах существуют специальные функции, которые отображают все выявленые ошибки:
Название | Описание |
error_reporting() |
функция устанавливает какие виды ошибок следует далее выводить и возвращает предыдущий вид ошибок, например:
|
trigger_error(), аналогичная функция: user_error() |
генерирует сообщения пользователя под видом ошибок E_USER_ERROR, E_USER_WARNING и E_USER_NOTICE, например:
|
Теперь Вы можете настроить в своих скриптах нужный вывод ошибок или наоборот отключить (если это удаленный сервер и Вы не хотите чтобы пользователи видели все предупреждения и уведомления).
В php текст ошибок, как правило детально описывает выявленую ошибку и указывает номер строки с ошибкой, например:
<?php
echo 0
?>
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\apache\localhost\www\info-pages\www\index.php on line 1
Данная ошибка синтаксическая, строка 1 не закрыта точкой с запятой.
Помимо вывода ошибок при написании кода очень часто приходится проверять передается и соответсвенно получается ли нужная информация в переменные php. Для этогоразработчиками используется функция var_dump(). В отличие от функции echo или print, функция var_dump позволяет выводить на экран, также, массивы. Например:
<?php
$a = array (4, 2, "a"=>45, "b"=>array(1,2));
$b = "переменная b";
$c = 3;
echo "<pre>
";
var_dump ($a);echo "<br>
";
var_dump ($b);echo "<br>
";
var_dump ($c);echo "<br>
";
echo "</pre>
";
?>
Выведет на экран:
array(4) {
[0]=>
int(4)
[1]=>
int(2)
["a"]=>
int(45)
["b"]=>
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
}
string(12) "переменная b"
int(3)
Надеюсь, что выше перечисленные инструменты упростят Вам разработку скриптов на php и сделают Ваш код более надежным.