2

CSS 変数を設定するために使用したいブートストラップ クラスがあります。

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initView()
    {
        $this->bootstrap('view');
        ...
        ...
    }
}

しかし、ビュー リソースを取得しようとすると、そのbootstrap('view')段階で失敗します。エラーが発生します:

... Circular resource dependency detected' in C:\ZendFramework\library\Zend\Application\Bootstrap\BootstrapAbstract.php on line 662
...

これはチュートリアル (および zend ドキュメント) が使用する手順であるため、これは奇妙です。何が間違っている可能性がありますか?

4

2 に答える 2

3

メソッドを次のようなものに変更する_initViewStuff()と、すべて問題ありません。

その理由は、のブートストラップシーケンスZend_Application_Bootstrap_BootstrapAbstractが次のとおりであるためです。

  1. $app->bootstrap()inへの最初の呼び出しはpublic/index.php、すべての_initXxx()メソッド(@see Zend_Application_Bootstrap_BootstrapAbstract::getClassResourceNames())を実行し、検出$this->bootstrap('xxx')したそれぞれのメソッドを呼び出しXxxます。resources.*次に、のキーで定義されたすべてのプラグインリソースに対して同様のことを行いますapplication.ini(ただし、以下で説明するように、これほど遠くまで到達することはありません)。

  2. の呼び出しはbootstrap('view')、と呼ばれるリソースをブートストラップするプロセスを開始したというフラグを内部に格納しviewます。

  3. _initXxx()彼は(1)と同様のことを行い、マッチング方法を探します。彼はそれを見つけて実行しようとします$this->_initView()

  4. 彼は自分が設定したフラグに気づき、無限ループに到達することを示しているため、循環依存の例外でベイルアウトします。

通常、リソースごとxxxに、次のアプローチの1つ(ただし、両方ではない)を使用してリソースをブートストラップします。

  1. メソッドを定義し_initXxx()ます。

  2. 次のような名前のプラグインリソースクラスを作成します(で使用するプラグインリソースの名前空間プレフィックスでMy_Application_Resource_Xxxあるシステムに通知します)My_Application_Resource_pluginPaths.My_Application_Resource = /path/to/dir/containing/pluginapplication/configs/application.ini

于 2013-03-03T04:09:41.867 に答える
2

対応するが存在するため、ブートストラップクラス'_initView'でこのメソッド名を使用することはできませんZend_Application_Resource_View。ブートストラップメソッド名の名前を変更するだけです。

于 2013-03-03T04:09:21.593 に答える