3.5 KiB
Debug — отладка
App\Helpers\Debug — структурированные данные публичного Debug Toolbar,
legacy-дампы, замеры времени/памяти и вывод SQL-ошибок.
use App\Helpers\Debug;
Публичный Debug Toolbar
panel($var, $label = '')
Сохраняет значение только на время текущего запроса и показывает его в AVE Public Debug → Данные. Ничего не печатает в HTML и возвращает исходное значение.
Debug::panel($document, 'Документ после обработки');
Debug::panel($filters, 'Фильтры каталога');
В панели отображаются подпись, тип, дерево значения, файл и строка вызова. Включение, права и правила безопасности описаны в разделе Публичная отладка.
Legacy-дампы
echo($var, $exit = false, $bg = null, $echo = true)
Читаемый вывод переменной; $exit = true — остановить выполнение после вывода.
Debug::echo($data); // посмотреть
Debug::echo($data, true); // посмотреть и die()
print(...), exp(...), _($var)
Разные форматы прямого HTML-вывода. Не используйте их на публичной странице: диагностику может увидеть посетитель.
dump(...)
Записывает HTML-дамп в корневой debug.html; это не вкладка Toolbar.
Замеры производительности
startTime($name = '') / endTime($name = '') — таймер участка кода.
startMemory($name = '') / endMemory($name = '') — замер памяти.
benchmark(callable $callable, array $params = []) — прогнать и замерить вызов.
elapsed($start) — прошедшее время от метки.
getStatistic($type = null) — статистика (время/память/кол-во запросов).
Debug::startTime('render');
$html = renderPage();
Debug::endTime('render'); // выведет длительность
$res = Debug::benchmark(function () { return heavyQuery(); });
Ошибки и трассировка
| Метод | Назначение |
|---|---|
errorMsg(string $msg) |
Показать сообщение об ошибке. |
errorSql($header, $sql, $caller = null, $exit = false) |
Красиво вывести SQL-ошибку. |
dumpTrace() / debugBacktrace() |
Трассировка стека. |
fileLines($filepath, $line, $highlight = true, $padding = 3) |
Фрагмент файла вокруг строки. |
Рецепты
Посмотреть вход контроллера без изменения ответа:
Debug::panel(Request::all(), 'HTTP-вход контроллера');
Найти узкое место:
Debug::startTime('audit');
$report = Model::audit();
Debug::endTime('audit');
Перед коммитом удаляйте временные HTML-дампы и шумные panel()-вызовы. Никогда
не передавайте в отладчик пароли, токены и платёжные ключи.