Профилировщик Symfony использует сборщики данных для сбора всей отладочной информации, которая позже отображается на панели инструментов и профилировщике. Эти сборщики данных представляют собой службы, классы которых реализуют DataCollectorInterface
.
Если сборщик данных включает шаблоны Twig для отображения своих данных, вы должны зарегистрировать службу вручную, чтобы определить шаблон для использования. Например, при использовании YAML для конфигурации:
# config/services.yaml
services:
App\DataCollector\MyCustomDataCollector:
tags:
-
name: data_collector
template: 'data_collector/template.html.twig'
id: 'app.my_custom_collector'
В Symfony 5.2 упростили создание собственных сборщиков данных с введением нового класса AbstractDataCollector
. Если вы расширите этот класс в своих пользовательских сборщиках, вы можете дополнительно определить следующие методы:
// src/DataCollector/MyCustomDataCollector.php
namespace App\DataCollector;
use Symfony\Bundle\FrameworkBundle\DataCollector\AbstractDataCollector;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\DataCollector\DataCollector;
class MyCustomDataCollector extends AbstractDataCollector
{
// ...
public function collect(Request $request, Response $response, \Throwable $exception = null)
{
$this->data = '...';
}
public static function getTemplate(): ?string
{
return 'data_collector/template.html.twig';
}
public function getName()
{
return 'app.my_custom_collector';
}
}
Это оно! При использовании конфигурации службы по умолчанию с автоконфигурацией Symfony автоматически зарегистрирует этот сборщик данных и будет использовать его, начиная со следующего запроса. Вам больше не нужно регистрировать сервисы вручную.
Единственное предостережение заключается в том, что приоритет сборщика нельзя настроить таким образом, поэтому вам все равно придется зарегистрировать службу вручную, чтобы установить приоритет.