这是ZF 手册_init
中的方法示例。最后有命令:Zend_Bootstrap
return
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initView()
{
// Initialize view
$view = new Zend_View();
$view->doctype('XHTML1_STRICT');
$view->headTitle('My First Zend Framework Application');
// Add it to the ViewRenderer
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
'ViewRenderer'
);
$viewRenderer->setView($view);
// Return it, so that it can be stored by the bootstrap
return $view; // Why return is here?
}
}
可以由引导程序存储
为什么要回来?引导程序将其存储在哪里,为什么?什么对象调用这个方法,谁得到结果?如果不返回会发生什么?
更新:
在可用资源插件页面的关于部分中View
,它们显示了以下启动方式Zend_View
:
配置选项是每个Zend_View 选项。
Example #22 示例视图资源配置
下面是一个示例 INI 片段,展示了如何配置视图资源。
resources.view .encoding = "UTF-8"
resources.view .basePath = APPLICATION_PATH "/views/"
View
从application.ini
文件以及他们在 Zend_Application 快速入门页面中编写的所有其他资源开始这种方式似乎既方便又合理。但同时在同一个 Zend_Application 快速启动页面上,他们说View
必须从以下位置启动Bootstrap
:
现在,我们将添加一个自定义视图资源。初始化视图时,我们需要设置 HTML DocType 和标题的默认值,以便在 HTML 头部中使用。这可以通过编辑 Bootstrap 类来添加一个方法来完成:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initView()
{
// Initialize view
$view = new Zend_View();
$view->doctype('XHTML1_STRICT'); // the same operations, I can set this in application.ini
$view->headTitle('My First Zend Framework Application'); // and this too
// Add it to the ViewRenderer
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
'ViewRenderer'
);
$viewRenderer->setView($view);
// Return it, so that it can be stored by the bootstrap
return $view;
}
}
并且事件与其他资源更有趣,Request
例如这里:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initRequest()
{
// Ensure the front controller is initialized
$this->bootstrap('FrontController'); // why to initialized FC here if it is going to be initialized in application.ini anyway like resource.frontController.etc?
// Retrieve the front controller from the bootstrap registry
$front = $this->getResource('FrontController');
$request = new Zend_Controller_Request_Http();
$request->setBaseUrl('/foo');
$front->setRequest($request);
// Ensure the request is stored in the bootstrap registry
return $request;
}
}
因此,他们似乎提供了以这种或那种方式启动资源的选择。但是哪一个是正确的呢?为什么他们混合它们?哪个更好用?
事实上,我可以FC
从我的以下内容中删除所有这些行application.ini
:
resources.frontController.baseUrl = // some base url
resources.frontController.defaultModule = "Default"
resources.frontController.params.displayExceptions = 1
并像这样重写它:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initFrontController()
{
$this->bootstrap('FrontController');
$front = $this->getResource('FrontController');
$front->set ...
$front->set ... // and here I set all necessary options
return $front;
}
}
application.ini
way 和way 和有什么不一样_initResource
?这种差异是否意味着工作中的严重问题?