Skip to content

Коллектор шаблонов

Захватывает рендеринг шаблонов/представлений с опциональным замером времени, захватом вывода, параметрами и обнаружением дубликатов. Работает с любым шаблонизатором (Twig, Blade, PHP-шаблоны и др.).

Собираемые данные

ПолеОписание
templateПуть к файлу или имя шаблона
renderTimeДлительность рендеринга в секундах (опционально, 0 если не измеряется)
outputРезультат рендеринга HTML (опционально, пусто если не захвачен)
parametersПараметры, переданные в шаблон (опционально)

Схема данных

json
{
    "renders": [
        {
            "template": "home/index.html.twig",
            "renderTime": 0.0045,
            "output": "",
            "parameters": []
        },
        {
            "template": "/app/views/user/profile.php",
            "renderTime": 0,
            "output": "<div class=\"profile\">...</div>",
            "parameters": {"user": "object@App\\Entity\\User#42"}
        }
    ],
    "totalTime": 0.0045,
    "renderCount": 2,
    "duplicates": {
        "groups": [],
        "totalDuplicatedCount": 0
    }
}

Сводка (отображается в списке отладочных записей):

json
{
    "template": {
        "renderCount": 2,
        "totalTime": 0.0045,
        "duplicateGroups": 0,
        "totalDuplicatedCount": 0
    }
}

Контракт

Две точки входа в зависимости от доступных данных:

php
use AppDevPanel\Kernel\Collector\TemplateCollector;

// Шаблонизаторы с замером времени (Twig, Blade)
$collector->logRender(
    template: 'home/index.html.twig',
    renderTime: 0.0045,
);

// Системы представлений с захватом вывода (Yii views, PHP-шаблоны)
$collector->collectRender(
    template: '/app/views/user/profile.php',
    output: '<div class="profile">...</div>',
    parameters: ['user' => $userObject],
    renderTime: 0.003, // опционально
);

Как это работает

Адаптеры фреймворков подключаются к системе рендеринга шаблонов/представлений:

Панель отладки

  • Карточки сводки — общее количество отрисованных шаблонов, суммарное время рендеринга (при наличии замеров)
  • Список шаблонов — все отрисованные шаблоны с путями к файлам и временем рендеринга
  • Предпросмотр вывода — результат рендеринга HTML (раскрываемый, при наличии захвата)
  • Параметры — раскрываемые параметры представления (при наличии захвата)
  • Обнаружение дубликатов — выделяет повторные рендеринги одного шаблона (проблемы N+1)
  • Плоский / Группированный вид — переключение между всеми рендерингами и группированными дубликатами

Выпущено под лицензией MIT.