The Traceable Event Dispatcher

The TraceableEventDispatcher is an event dispatcher that wraps any other event dispatcher and can then be used to determine which event listeners have been called by the dispatcher. Pass the event dispatcher to be wrapped and an instance of the Stopwatch to its constructor:

TraceableEventDispatcher は、他のイベント ディスパッチャーをラップするイベント ディスパッチャーであり、ディスパッチャーによって呼び出されたイベント リスナーを特定するために使用できます。ラップするイベント ディスパッチャーと、Stopwatch のインスタンスをそのコンストラクターに渡します。
1
2
3
4
5
6
7
8
9
10
use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher;
use Symfony\Component\Stopwatch\Stopwatch;

// the event dispatcher to debug
$dispatcher = ...;

$traceableEventDispatcher = new TraceableEventDispatcher(
    $dispatcher,
    new Stopwatch()
);

Now, the TraceableEventDispatcher can be used like any other event dispatcher to register event listeners and dispatch events:

これで、TraceableEventDispatcher を他のイベント ディスパッチャーと同様に使用して、イベント リスナーを登録し、イベントをディスパッチできます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// ...

// registers an event listener
$eventListener = ...;
$priority = ...;
$traceableEventDispatcher->addListener(
    'event.the_name',
    $eventListener,
    $priority
);

// dispatches an event
$event = ...;
$traceableEventDispatcher->dispatch($event, 'event.the_name');

After your application has been processed, you can use the getCalledListeners() method to retrieve an array of event listeners that have been called in your application. Similarly, the getNotCalledListeners() method returns an array of event listeners that have not been called:

アプリケーションが処理された後、getCalledListeners() メソッドを使用して、アプリケーションで呼び出されたイベント リスナーの配列を取得できます。同様に、getNotCalledListeners() メソッドは、呼び出されていないイベント リスナーの配列を返します。
1
2
3
4
// ...

$calledListeners = $traceableEventDispatcher->getCalledListeners();
$notCalledListeners = $traceableEventDispatcher->getNotCalledListeners();