zendでmodule.phpのfinish関数を構成しようとしています.finish関数を呼び出すある種のリスナーを(ブートストラップで)構成する必要があることを理解しているので、終了後にコードを実行できますユーザーの要求。
モジュールがユーザー要求を終了したら、finish を呼び出すようにモジュールを設定するサンプル コードを誰かが提供できますか。
ありがとう!
zendでmodule.phpのfinish関数を構成しようとしています.finish関数を呼び出すある種のリスナーを(ブートストラップで)構成する必要があることを理解しているので、終了後にコードを実行できますユーザーの要求。
モジュールがユーザー要求を終了したら、finish を呼び出すようにモジュールを設定するサンプル コードを誰かが提供できますか。
ありがとう!
これは、次のように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 で、負の優先度が許可されます。)
基本的な考え方は、リスナーをイベントにアタッチすることです。これを行う場所がクラスのonBootstrap
メソッド内にあることに正しく注意したからです。Module
以下はあなたを始めるはずです...
public function onBootstrap(MvcEvent $e)
{
$e->getApplication()->getEventManager()->attach(MvcEvent::EVENT_FINISH, function ($e) {
// do something...
});
}