Прослеживаемый диспетчер событий
Дата обновления перевода 2023-08-21
Прослеживаемый диспетчер событий
TraceableEventDispatcher - это диспетчер событий, обёртывающий любой другой диспетчер событий, который потом можно использовать для определения, какие слушатели событий вызывались диспетчером. Передайте диспетчер событий, который необходимо обернуть, и экземпляр Stopwatch его конструктору:
1 2 3 4 5 6 7 8 9 10
use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher;
use Symfony\Component\Stopwatch\Stopwatch;
// диспетчер событий для отладки
$dispatcher = ...;
$traceableEventDispatcher = new TraceableEventDispatcher(
$dispatcher,
new Stopwatch()
);
Теперь TraceableEventDispatcher
может быть использован как любой другой
диспетчер событий для регистрации слушателей событий и запуска событий:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// ...
// регистрирует слушатель событий
$eventListener = ...;
$priority = ...;
$traceableEventDispatcher->addListener(
'event.the_name',
$eventListener,
$priority
);
// запускает событие
$event = ...;
$traceableEventDispatcher->dispatch('event.the_name', $event);
После того, как ваше приложение будет обработано, вы можете использовать метод getCalledListeners(), чтобы извлечь массив слушателей событий, который были вызваны в вашем приложении. Похожим образом метод getNotCalledListeners() возвращает массив слушаталей событий, которые не вызывались:
1 2 3 4
// ...
$calledListeners = $traceableEventDispatcher->getCalledListeners();
$notCalledListeners = $traceableEventDispatcher->getNotCalledListeners();