ALBIREO CMS
version: 2025.07.15

Функции отладки Albireo CMS

alert debug debugAdd debugBenchmarkStart debugBenchmarkEnd debugBenchmarkOut debugPanel debugTrace pr prMakeStr

Функция alert

Генерирует HTML-блок для отображения сообщений (обычно ошибок) с возможностью кастомизации стилей.

Сигнатура

function alert(string $message, string $class = 'bg-red800 t-white pad10 t90 t-center'): string

Аргументы

string $message
Текст сообщения, который будет отображен внутри блока
string $class
CSS-классы для стилизации блока. По умолчанию содержит стили для красного фона, белого текста, отступов и центрирования

Результат

HTML-код (string) div элемента с переданным сообщением и классами стилей.

Примеры использования

// Стандартное сообщение об ошибке
echo alert('Неверный пароль');

// Сообщение с кастомными стилями
echo alert('Профиль обновлен', 'bg-blue100 pad15 rounded shadow');

// Использование в условной логике
if ($error) {
    echo alert($error->getMessage());
}

Примечания

  • Функция не экранирует HTML в сообщении - при необходимости это нужно делать перед вызовом
  • По умолчанию использует стили, подходящие для сообщений об ошибках (красный фон)
  • Для разных типов сообщений (ошибка, предупреждение, успех) можно передавать разные классы

Функция debug

Отладочная функция для вывода контекста выполнения с форматированным представлением.

Сигнатура

function debug(...$infos): void

Аргументы

mixed ...$infos
Произвольное количество дополнительных переменных для отображения

Результат

Выводит в поток вывода HTML-блок с отладочной информацией, но не возвращает значение.

Примеры использования

// Простой вызов с контекстом
function calculate($x, $y) {
    debug('Начало вычислений');
    // ...
}

// Вызов с дополнительной информацией
$user = getUser(123);
debug('Получен пользователь', $user);

// Использование с debugAdd()
debugAdd('Промежуточное значение', $temp);
processData();
debug('Результат обработки');

Функция debugAdd

Добавляет данные в стек отладки для последующего вывода при вызове debug().

Сигнатура

function debugAdd(...$adds): void

Аргументы

mixed ...$adds
Данные для добавления в стек отладки

Функция debugBenchmarkStart

Функция для начала замера времени выполнения участка кода в целях профилирования.

Сигнатура

function debugBenchmarkStart(string $mark): void

Аргументы

string $mark
Уникальная метка для идентификации замера. Используется для сопоставления с debugBenchmarkEnd().

Результат

Функция не возвращает значение, но сохраняет время начала замера в глобальный массив $debugBenchmark.

Примеры использования

// В конфигурации
define('DEBUG_BENCHMARK', true);

// В коде
debugBenchmarkStart('database_query');
// Выполнение запроса к базе данных
debugBenchmarkEnd('database_query');

debugBenchmarkStart('file_processing');
// Обработка файлов
debugBenchmarkEnd('file_processing');

// Вывод результатов в конце скрипта
debugBenchmarkOut();

Примечания

  • Требует предварительного определения константы DEBUG_BENCHMARK
  • Использует hrtime() для максимально точного замера времени
  • Работает в паре с debugBenchmarkEnd() и debugBenchmarkOut()
  • Хранит данные в глобальной переменной $debugBenchmark
  • Если DEBUG_BENCHMARK не определен, функция молча завершается

Связанные функции

  • debugBenchmarkEnd() - завершает замер времени для метки
  • debugBenchmarkOut() - выводит собранные результаты замеров

Функция debugBenchmarkEnd

Завершает замер времени выполнения участка кода, начатый debugBenchmarkStart(), и сохраняет результат.

Сигнатура

function debugBenchmarkEnd(string $mark, string $before = ''): void

Аргументы

string $mark
Метка, соответствующая вызову debugBenchmarkStart()
string $before
Дополнительный комментарий, который будет добавлен к результату замера (необязательный)

Результат

Функция не возвращает значение, но сохраняет время выполнения в миллисекундах в глобальный массив $debugBenchmark.

Примеры использования

debugBenchmarkStart('image_processing');
// Обработка изображений
debugBenchmarkEnd('image_processing', 'Processed 50 images');

debugBenchmarkStart('complex_calculation');
// Сложные вычисления
debugBenchmarkEnd('complex_calculation');

Примечания

  • Требует предварительного вызова debugBenchmarkStart() с такой же меткой
  • Преобразует наносекунды в миллисекунды (1e+6)
  • Если метка не найдена, функция молча завершается
  • Дополнительный комментарий добавляется через разделитель ' # '
  • Для работы требует определения DEBUG_BENCHMARK

Связанные функции

  • debugBenchmarkStart() - начинает замер времени
  • debugBenchmarkOut() - выводит результаты всех замеров

Функция debugBenchmarkOut

Выводит сводную информацию по всем проведенным замерам времени и общую статистику выполнения.

Сигнатура

function debugBenchmarkOut(): void

Результат

Функция выводит:

  1. Массив всех замеров времени в формате [метка => время_в_мс]
  2. Общее время выполнения скрипта в секундах
  3. Текущее использование памяти в мегабайтах

Примеры использования

// В начале скрипта
define('DEBUG_BENCHMARK', true);
define('TIME_START', microtime(true));

// В различных местах кода
debugBenchmarkStart('db_query');
// запрос к БД
debugBenchmarkEnd('db_query');

debugBenchmarkStart('file_operation');
// работа с файлами
debugBenchmarkEnd('file_operation');

// В конце скрипта
debugBenchmarkOut();

Выводимая информация

  • Результаты всех замеров через pr()
  • Общее время выполнения: microtime(true) - TIME_START
  • Использование памяти: memory_get_usage()

Требования

  • Требует определения DEBUG_BENCHMARK

Связанные функции

  • debugBenchmarkStart() - начинает замер
  • debugBenchmarkEnd() - завершает замер

Формат вывода

Пример вывода:

Array
(
    [db_query] => 15.642
    [file_operation] => 102.351
)
0.128s/5.243Mb

Отладочная панель debugPanel Albireo CMS

Системная панель отладки, отображаемая в подвале сайта. Собирает и выводит различную отладочную информацию.

Сигнатура

function debugPanel(mixed $data = null): void

Аргументы

mixed $data
Данные для добавления в панель. Принимает любые типы данных. Если не указан - выводит собранные данные.

Результат

Выводит форматированные отладочные данные в подвале сайта через функцию pr().

Типичное содержимое панели

  • Ненайденные переводы языковых ключей
  • Отладочные сообщения системы
  • Произвольные данные разработчика
  • Информация о запросах
  • Предупреждения системы

Примеры использования

// Добавление предупреждения о ненайденном переводе
if (!$translation) {
    debugPanel("Отсутствует перевод для ключа: {$key}");
}

// Логирование параметров запроса
debugPanel([
    'module' => $module,
    'action' => $action,
    'params' => $_REQUEST
]);

Требования

  • Должна быть включена отладка в конфигурации ('debug' => true)

Рекомендации

  • Полезно для отладки сложных процессов
  • Можно добавлять метки времени для анализа производительности

Функция debugTrace

Форматированный вывод стека вызовов функций для отладки сложных сценариев.

Сигнатура

function debugTrace(int $limit = 0): void

Аргументы

int $limit
Количество отображаемых вызовов. 0 - показать весь стек. Значение увеличивается на 1 для исключения текущей функции.

Формат вывода

HTML-блок с подсветкой элементов:

  • Синий цвет для ключей (file, function, line)
  • Обычный текст для значений
  • Отдельное форматирование аргументов

Особенности

  • Удаляет первый элемент стека (текущий вызов debugTrace)
  • Сортирует элементы по порядку: file, function, line, args
  • Очищает пути от LEVEL_UP_DIR
  • Форматирует сложные аргументы через prMakeStr()
  • Использует CSS-стили для лучшей читаемости

Рекомендации по использованию

  • Используйте для отладки сложных цепочек вызовов
  • Можно ограничивать глубину вывода для больших стеков

Основная функция отладки pr

Универсальный инструмент для форматированного вывода отладочной информации в Albireo CMS.

Сигнатура

function pr(mixed ...$vars): void

Аргументы

mixed ...$vars
Произвольное количество переменных любого типа для отображения

Особенности вывода

  • Каждая переменная выводится в отдельном блоке
  • Результат форматируется для удобного чтения
  • Автоматические отступы между блоками

Примеры использования

// Вывод простой переменной
pr($userId);

// Вывод нескольких переменных
pr($_REQUEST, $userData, $config);

// Использование в отладочных целях
if ($error) {
    pr('Error occurred:', $error->getMessage(), $error->getTrace());
}

Рекомендации

  • Используйте для быстрой отладки в любом месте кода

Функция prMakeStr

Вспомогательная функция для форматированного вывода переменных в отладочной информации.

Сигнатура

function prMakeStr(mixed $var): string

Аргументы

mixed $var
Переменная любого типа для форматирования

Возвращаемое значение

Строка (string) с HTML-разметкой, представляющая форматированное значение переменной.

Особенности обработки

  • NULL: преобразуется в строку 'NULL'
  • Boolean: TRUE → 'TRUE', FALSE → 'FALSE'
  • Пустая строка: преобразуется в '- EMPTY STRING -'
  • Остальные типы: обрабатываются через print_r()

Примеры использования

// Специальные значения
echo prMakeStr(null); // 'NULL'
echo prMakeStr(true); // 'TRUE'
echo prMakeStr(''); // '- EMPTY STRING -'

// Массивы
$data = ['id' => 123, 'name' => 'John'];
echo prMakeStr($data);

// Array
// (
//     [id] => 123
//     [name] => John
// )

// Объекты
$obj = new stdClass();
$obj->property = 'value';
echo prMakeStr($obj);

// stdClass Object
// (
//     [property] => value
// )