当扩展事件侦听器类时,我们在ZF3中有一个类,请参见以下类。 现在,当事件被触发时,它将多次触发事件侦听器。 如何避免对同一听众的多重打击?在为两个不同的模块加载时,我们只需要在基类或派生侦听器中将&触发事件作为&即可。
在文件中:EventListener
class EventListener implements ListenerAggregateInterface
{
protected $listeners = array();
/**
* {@inheritDoc}
*/
public function attach(EventManagerInterface $events)
{
$sharedEvents = $events->getSharedManager();
$this->listeners[] = $sharedEvents->attach(['TestEventService'], 'event_change', array($this, 'onChangeEvent'));
}
public function detach(EventManagerInterface $events)
{
}
public function onChangeEvent(){
// here some code
}
}
在文件中:EventListenerExtended
class EventListenerExtended extends EventListener
{
public function onChangeEvent(){
//here some code
}
}
在两个不同的模块中,我们触发了module.php:
public function onBootstrap(EventInterface $e)
{
$eventManager->attach(new EventListener());
}
public function onBootstrap(EventInterface $e)
{
$eventManager->attach(new EventListenerExtended());
}