1.4 Отладчик

Для отладки использовалась доработанная функция dumper(), предложенная в книге [2.С.225]. Моя доработка заключалась в замене функции each(), которая не поддерживается в версиях языка PHP выше 7.2, на цикл foreach. Скрипт с функциями размещаем в отдельном файле dumper.php и будем подключать в шапке «проблемной» страницы для вызова функции dumper().

Листинг 1. dumper.php


// Функция для вывода содержимого переменной

// Распечатывает дамп переменной на экран

function dumper($obj)

{

echo

"

",

htmlspecialchars(dumperGet($obj)),

"

";

}


// Возвращает строку – дамп значения переменной в древовидной форме

// (если это массив или объект). В переменной $leftSp хранится

// строка с пробелами, которая будет выводиться слева от текста.

function dumperGet(&$obj, $leftSp = "")

{

if (is_array($obj)) {

$type = "Array[" . count($obj) . "]";

} elseif (is_object($obj)) {

$type = "Object";

} elseif (gettype($obj) == "boolean") {

return $obj ? "true" : "false";

} else {

return "\"$obj\"";

}

$buf = $type;

$leftSp .= " ";

foreach ($obj as $k => $v) {

Reset($obj);

if ($k === "GLOBALS") {

continue;

}

$buf .= "\n$leftSp$k => " . dumperGet($v, $leftSp);

}

return $buf;

}

Данная функция выводит содержимое любой, сколь угодно сложной переменной, будь то массив, объект или простая переменная, в гораздо более удобном виде чем стандартные print_r() или var_dump().

После того как я некоторое время поработал с ней, то согласился с мнением ее разработчиков, в том, что при отладке она действительно хороша.

Ложим файл dumper.php в корень папки chat.

Скорее всего при работе с книгой рано или поздно у вас возникнут сложности с пониманием того как действует тот или иной код. Поэтому советую создать пустой файл php и назвать его допустим test.php. В шапке этого файла подключить данную функцию при помощи инструкции include. Разместить test.php в корне сайта и использовать как страницу отладки непонятного кода. Отладку делать эмпирическим путем. Вставляя непонятный код и запуская страницу для проверки того, что этот код делает, ну или не делает.

Проект относительно небольшой, поэтому с моей точки зрения, это гораздо удобнее и нагляднее, да и полезнее, чем использовать XDebug или отладчик VS Code.

Постановка задачи

Загрузка...