Простежуваний диспетчер подій

Дата оновлення перекладу 2022-11-12

Простежуваний диспетчер подій

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();