配置zend模块使用finish


Configuring zend module to use finish

我试图在zend中配置模块.php的完成函数,从我的理解,你需要配置某种类型的侦听器(在引导我认为),将调用完成函数,然后我可以在完成用户请求后执行代码。

有人能提供一些示例代码来设置模块,以便在完成用户请求后调用finish。

谢谢!

您可以在Module.phponBootstrap方法中这样做:

public function onBootstrap(MvcEvent $e)
{
    $em = $e->getApplication()->getEventManager();
    $em->attach('Zend'Mvc'MvcEvent::EVENT_FINISH, array($this, 'doSomething'));
}

,然后定义doSomethingModule.php中的函数,如下所示:

public function doSomething(MvcEvent $e)
{
    // your code goes here
}

如果你在同一个事件上附加了多个监听器,你也可以为你想要执行的回调函数添加一些优先级:

$em->attach('Zend'Mvc'MvcEvent::EVENT_FINISH, array($this, 'doSomethingFirst'), 20);
$em->attach('Zend'Mvc'MvcEvent::EVENT_FINISH, array($this, 'doAnotherThingLater'), 10);

优先级越高,执行越早。(默认优先级为1,允许设置负优先级)

基本思想是将侦听器附加到事件,正如您正确地注意到的那样,这样做的位置是在Module类的onBootstrap方法中。

public function onBootstrap(MvcEvent $e)
{
    $e->getApplication()->getEventManager()->attach(MvcEvent::EVENT_FINISH, function ($e) {        
        // do something...
    });
}