oo',意思本监听器的目标是:Foo,事件是:bar,其他的目标不要来找我啦。
而我们当初创建事件的时候,使用了setIdentifiers()。这个函数便设置了target,也就是标识。
之前我们使用了ShareEventManager注册了一个监听器,该监听器是共享的。注意:事件不共享,监听器共享。现在我们需要做的就是告诉事件Foo:你可以使用某个监听器啦。我们使用如下代码:
$foo = new Foo();
$foo->getEventManager()->setSharedManager($sharedEvents);
$foo->bar('bar', 'bat');
代码的最后我们触发了bar事件,随之会触发上面的事件,结果就不累述了。
如果我们使用SubFoo继承Foo类,SubFoo里的bar()仍然会触发我们的共享事件。原因是们在Foo的setIndentifiers()里同时传入了get_class($this),__CLASS__。如果我们在SubFoo里面调用该方法,这两个参数分别返回SubFoo和Foo(__CLASS__相当于get_class()不带参数)。