2

アプリケーションのディレクトリ構造は次のとおりです。

application
   modules
      default
        controllers
        models
        views
        Bootstrap.php
     test
       controllers
       models
       views
       Bootstrap.php

以下は、モジュール固有のブートストラップ ファイルのコードです。

//default/bootstrap.php
class Default_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function _initMessageDefault(){
        echo "called default module's bootstrap file";
    }
}

//test/bootstrap.php
class Test_Bootstrap extends Zend_Application_Module_Bootstrap
{
  protected function _initMessageTest(){
    echo "called test module's bootstrap file";
  }
}

ここで、デフォルトのコントローラー、つまり www.domain.com/index を呼び出すと、次の出力が表示されます。

called default module's bootstrap file
called test module's bootstrap file

私の質問は、なぜ両方のモジュールのブートストラップ ファイルが呼び出されるのかということです。デフォルト モジュールを呼び出すときに、デフォルト モジュールのブーストラップ ファイルだけを呼び出すべきではありませんか?

これはバグですか、それとも何か間違っていますか?

事前にご協力いただきありがとうございます。

4

1 に答える 1

7

これは意図されたものです。ブートストラップはアプリケーションの初期化用であり、すべてのブートストラップはリクエストごとに実行されます。

現在のモジュールに対してのみ何かをしようとしている場合、おそらく必要なのはコントローラープラグインです。これらもリクエストごとに実行されますが、そこにある現在のモジュールを確認してから、いくつかのカスタム コードを実行できます。

于 2013-06-21T19:14:01.680 に答える