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. 他做了与(1)类似的事情,寻找匹配的_initXxx()方法。他找到它并试图执行$this->_initView()

  4. 他注意到他设置的标志,表明他将陷入无限循环,因此他以循环依赖异常退出。

通常,对于每个资源xxx,您可以使用以下方法中的一种(但不能同时使用两种方法,如您所发现的)来引导它:

  1. 定义一个_initXxx()方法。

  2. 创建一个名为的插件资源类(您使用inMy_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 回答