可追踪事件调度器
The 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()
);
现在,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');
在你的应用程序被处理后,你可以使用 getCalledListeners() 方法来检索应用程序中已被调用的事件监听器数组。类似地,getNotCalledListeners() 方法返回一个尚未被调用的事件监听器数组
1 2 3 4
// ...
$calledListeners = $traceableEventDispatcher->getCalledListeners();
$notCalledListeners = $traceableEventDispatcher->getNotCalledListeners();
本作品,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议获得许可。