Traceable的事件派遣器

3.4 版本
维护中的版本

TraceableEventDispatcher是“把其他事件派遣器进行打包,然后让它们决定调用哪个监听器”这样一个event dispatcher(译注:类名中的Traceable是“可追踪的”之意)。在它的构造器中,传入待包装的event dispatcher,和一个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 对事件派遣器进行除错
$eventDispatcher = ...;
 
$traceableEventDispatcher = new TraceableEventDispatcher(
    $eventDispatcher,
    new Stopwatch()
);

现在,TraceableEventDispatcher可以像其他的事件派遣器一样被使用了,可以注册监听并派遣事件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// ...
 
// register an event listener 注册一个监听
$eventListener = ...;
$priority = ...;
$traceableEventDispatcher->addListener(
    'event.the_name',
    $eventListener,
    $priority
);
 
// dispatch an event 将事件派遣
$event = ...;
$traceableEventDispatcher->dispatch('event.the_name', $event);

当你的程序被处理后,你可以使用getCalledListeners()方法来取出一个“在你的程序中被调用过的”监听器的数组(译注:即是通过traceable的dispatcher追踪到了一组特定的监听)。类似的,getNotCalledListeners()方法则返回那些没被调用的监听数组:

1
2
3
4
// ...
 
$calledListeners = $traceableEventDispatcher->getCalledListeners();
$notCalledListeners = $traceableEventDispatcher->getNotCalledListeners();

本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。

登录symfonychina 发表评论或留下问题(我们会尽量回复)