我从 Zend Framework 开始,我想了解 Bootstrap 文件。我已经全部学会了_init
方法默认执行,但对我来说似乎很困惑。无论如何,这不是我想问的。
A 来到了周围$this->bootstrap('layout');
行动,我不确定我是否理解这一点。这是application.ini文件中的resource.layout变量吗?我想真正深入了解引导过程。
我要求你一步一步的解释。提前致谢!
这是我的引导文件:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initAutoload()
{
$moduleLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => APPLICATION_PATH
));
return $moduleLoader;
}
function _initViewHelpers()
{
$this->bootstrap('layout');
$layout = $this->getResource('layout');
$view = $layout->getView();
$view->doctype('XHTML1_STRICT');
$view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
$view->headTitle()->setSeparator(' - ');
$view->headTitle('Zend Framework Tutorial');
}
}
该行来自application.ini
resources.layout[] =
相当于:
_initLayout() {}
in Bootstrap.php
两者都在初始化新对象,并且这个对象被设置为bootstrap
param,它是一些应用程序资源的容器(由_init
方法)。
它们是一一执行的,因此为了确保一个资源在当前资源之前初始化,您可以使用以下命令强制执行该顺序:
_initSomeResource() {
$this->bootstrap('otherResource');
// ..
return $someValue;
}
_initOtherResource() {
// ..
}
所以资源实例化的顺序是:
otherResource
someResource
现在,您还可以使用:
$bootstrap->getParam('someResource'); // returns $someValue
注意,你可能会遇到Circular Dependency
错误,当你试图在每个人之前执行对方时。
您可以使用尽可能多的_init
您需要的方法,但为了使它们可重用,您可以将它们分离到自己的类中,实现Zend_Application_Resource_Abstract
class.
有一些盒子外面应用程序资源,您可以在其中找到Zend/Application/Resource
目录。这些是您参考的资源application.ini
, i.e.:
resources.view.encoding = "utf-8" ; in application.ini
Zend/Application/Resource/View.php (path to the resource class)
Zend_Application_Resource_View::setEncoding('UTF-8'); // equivalent pseudocode
希望现在更清楚了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)