Прослеживаемый диспетчер событий¶
TraceableEventDispatcher
-
это диспетчер событий, обёртывающий любой другой диспетчер событий, который потом
можно использовать для определения, какие слушатели событий вызывались диспетчером.
Передайте диспетчер событий, который необходимо обернуть, и экземпляр
Stopwatch
его конструктору:
use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher;
use Symfony\Component\Stopwatch\Stopwatch;
// диспетчер событий для отладки
$dispatcher = ...;
$traceableEventDispatcher = new TraceableEventDispatcher(
$dispatcher,
new Stopwatch()
);
Теперь TraceableEventDispatcher
может быть использован как любой другой
диспетчер событий для регистрации слушателей событий и запуска событий:
// ...
// регистрирует слушатель событий
$eventListener = ...;
$priority = ...;
$traceableEventDispatcher->addListener(
'event.the_name',
$eventListener,
$priority
);
// запускает событие
$event = ...;
$traceableEventDispatcher->dispatch('event.the_name', $event);
После того, как ваше приложение будет обработано, вы можете использовать метод
getCalledListeners()
,
чтобы извлечь массив слушателей событий, который были вызваны в вашем приложении.
Похожим образом метод
getNotCalledListeners()
возвращает массив слушаталей событий, которые не вызывались:
// ...
$calledListeners = $traceableEventDispatcher->getCalledListeners();
$notCalledListeners = $traceableEventDispatcher->getNotCalledListeners();
Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.