ZF3事件监听器类在扩展时开始多次监听同一事件

时间:2018-11-30 12:42:56

标签: zend-framework event-listener zend-framework3

当扩展事件侦听器类时,我们在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());
    }

0 个答案:

没有答案