我有一个我想用来设置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文档)使用的过程。可能有什么不对?
答案 0 :(得分:3)
将方法更改为类似_initViewStuff()
的方法,一切都会好的。
原因是Zend_Application_Bootstrap_BootstrapAbstract
中的引导序列如下:
您对$app->bootstrap()
public/index.php
的初次通话会浏览所有_initXxx()
方法(@see Zend_Application_Bootstrap_BootstrapAbstract::getClassResourceNames()
)并为每个$this->bootstrap('xxx')
调用Xxx
它找到了。然后,它将为resources.*
中的application.ini
键定义的所有插件资源执行类似的操作(尽管您从未如此深入,如下所述)。
对bootstrap('view')
的调用会在内部存储一个标志,表明他已启动该过程以引导名为view
的资源。
他做了与(1)类似的事情,寻找匹配的_initXxx()
方法。他发现并尝试执行$this->_initView()
他注意到他设置的旗帜,表示他会打出一个无限循环,所以他挽救了循环依赖异常。
通常,对于每个资源xxx
,您使用以下方法中的一个(但不是两个,如您所发现的)引导它:
定义_initXxx()
方法。
创建一个名为My_Application_Resource_Xxx
的插件资源类(使用My_Application_Resource_
中的pluginPaths.My_Application_Resource = /path/to/dir/containing/plugin
通知该系统application/configs/application.ini
是插件资源的命名空间前缀
答案 1 :(得分:2)
您无法在引导类'_initView'中使用此方法名称,因为存在相应的Zend_Application_Resource_View
,只需重命名引导方法名称