PET Framework предоставляет встроенную отладочную панель DebugBar, которая отображается внизу страницы и собирает информацию о выполнении приложения: SQL-запросы, время выполнения, использование памяти и список подключённых файлов.
DebugBar включается через статическое свойство App::$debug перед вызовом App::init():
use Pet\App;
App::$debug = true;
App::init();При App::$debug = true:
- Определяется константа
PET_DEBUG - Засекается время старта приложения
- Включается сбор SQL-запросов в
DB - В
Viewавтоматически вставляется HTML-код панели перед</body>
При App::$debug = false (по умолчанию) DebugBar полностью отключён и не влияет на производительность.
1. Debug/DebugBar.php — класс-коллектор
Класс Pet\Debug\DebugBar собирает и отображает отладочные данные.
| Метод | Описание |
|---|---|
start() |
Засекает время старта (microtime(true)) |
stop() |
Засекает время финиша |
addQuery(string $query, float $time) |
Добавляет SQL-запрос в лог |
getQueries() |
Возвращает массив SQL-запросов |
getExecutionTime() |
Возвращает общее время выполнения в секундах |
getMemoryUsage() |
Возвращает пик памяти (B, KB, MB, GB) |
getIncludedFiles() |
Возвращает список подключённых файлов |
reset() |
Очищает все собранные данные |
render() |
Возвращает HTML-код панели |
2. Debug/style.php — CSS-стили
Тёмная тема в стиле Catppuccin. Подключается через include в render().
3. Debug/script.php — JavaScript
Управление вкладками и сворачивание панели. Функции:
switchDebugTab(tabName)— переключение между вкладкамиtoggleDebugBar()— свернуть/развернуть панельtoggleVendorFiles()— показать/скрыть vendor-файлы
Отображает метрики производительности:
| Метрика | Описание |
|---|---|
| Время выполнения | От start() до stop() в секундах |
| Пик памяти | memory_get_peak_usage(true) |
| SQL запросов | Количество выполненных запросов |
| Подключено файлов | Количество файлов приложения (без vendor) |
Список всех SQL-запросов, выполненных через DB:
- Номер запроса
- Текст SQL-запроса (с подсветкой синтаксиса)
- Время выполнения в секундах
Если запросов не было — отображается сообщение "SQL-запросы не выполнялись."
Список всех подключённых PHP-файлов (get_included_files()):
- Файлы приложения — отображаются по умолчанию (все пути, не содержащие
/vendor/) - Vendor-файлы — скрыты по умолчанию, отображаются после установки чекбокса "Показать vendor-файлы"
Бейдж на вкладке показывает количество файлов приложения (без vendor).
public static bool $debug = false;
public static function init()
{
if (self::$debug) {
defined('PET_DEBUG') || define('PET_DEBUG', true);
DebugBar::start();
} else {
defined('PET_DEBUG') || define('PET_DEBUG', false);
}
// ...
}Метод logQuery() вызывается в:
fetch()— после выполнения SELECTexecute()— после выполнения INSERT/UPDATE/DELETEq()— после выполнения произвольного SQL
protected function logQuery(string $query, float $start): void
{
if (defined('PET_DEBUG') && PET_DEBUG === true) {
$time = microtime(true) - $start;
DebugBar::addQuery($query, $time);
}
}Метод injectDebugBar() вставляет HTML панели перед </body>:
private static function injectDebugBar(string $html): string
{
if (!defined('PET_DEBUG') || PET_DEBUG !== true) {
return $html;
}
DebugBar::stop();
$debugHtml = DebugBar::render();
$pos = strripos($html, '</body>');
if ($pos !== false) {
return substr_replace($html, $debugHtml . "\n", $pos, 0);
}
return $html . "\n" . $debugHtml;
}Поддерживаются оба типа шаблонов:
- PHP-шаблоны (
.php) — буферизация вывода черезob_start()/ob_get_clean() - Blade-шаблоны (
.blade.php) — результатBlade::render()проходит черезinjectDebugBar()
| Что искать | Где |
|---|---|
| Класс DebugBar | Debug/DebugBar.php |
| CSS-стили | Debug/style.php |
| JavaScript | Debug/script.php |
| Включение отладки | App.php:21 (App::$debug) |
| Сбор SQL-запросов | DataBase/DB.php:382 (logQuery()) |
| Инъекция в шаблоны | View/View.php:194 (injectDebugBar()) |
| Фраза | Что ищет |
|---|---|
PET_DEBUG |
Проверка включения отладки |
DebugBar:: |
Вызовы методов DebugBar |
injectDebugBar |
Инъекция панели в HTML |
logQuery |
Логирование SQL-запросов |
pet-debug-bar |
CSS-класс панели |
switchDebugTab |
JS-функция переключения вкладок |
// public_html/index.php
use Pet\App;
// Включаем отладочную панель
App::$debug = true;
// Запускаем приложение
App::init();После этого на всех страницах, отображаемых через View::open() или View::getTemplate(), внизу будет отображаться отладочная панель.