1

zendでmodule.phpのfinish関数を構成しようとしています.finish関数を呼び出すある種のリスナーを(ブートストラップで)構成する必要があることを理解しているので、終了後にコードを実行できますユーザーの要求。

モジュールがユーザー要求を終了したら、finish を呼び出すようにモジュールを設定するサンプル コードを誰かが提供できますか。

ありがとう!

4

2 に答える 2

6

これは、次のようにonBootstrapメソッドで実行できます。Module.php

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

次に、次のように関数を定義しdoSomethingます。Module.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 で、負の優先度が許可されます。)

于 2013-05-10T03:21:37.760 に答える
2

基本的な考え方は、リスナーをイベントにアタッチすることです。これを行う場所がクラスのonBootstrapメソッド内にあることに正しく注意したからです。Module以下はあなたを始めるはずです...

public function onBootstrap(MvcEvent $e)
{
    $e->getApplication()->getEventManager()->attach(MvcEvent::EVENT_FINISH, function ($e) {        
        // do something...
    });
}
于 2013-05-10T03:03:52.773 に答える