Files
ave-cms/help/helpers/Debug.md
T
2026-07-27 12:58:44 +03:00

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()-вызовы. Никогда не передавайте в отладчик пароли, токены и платёжные ключи.