下面是Zend_Bootstrap
的_init
方法的示例從ZF manual。在到底有return
命令:返回在ZF Bootstrap類的_init方法中做什麼?
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?
}
}
可以通過引導
爲什麼返回儲存在哪裏? Bootstrap在哪裏存儲它,爲什麼?什麼對象調用這個方法,誰得到結果?如果沒有返回會發生什麼?
UPDATE:
上的可用資源插件頁面,in the section about View
,他們表現出的Zend_View
發起的方式如下:
配置選項是每the Zend_View options。
實施例#22樣品查看資源配置
下面是一個示例代碼段INI示出了如何配置視圖 資源。
resources.view .encoding = 「UTF-8」
resources.view .basePath = APPLICATION_PATH 「/視圖/」
而且似乎方便合理,以啓動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
例如here:
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;
}
}
如此看來,他們提供了一種選擇來啓動這種或那種方式的資源。但是哪一個是對的呢?他們爲什麼混合使用?哪一個更好用?
其實我可以從我application.ini
刪除所有這些有關FC
線:
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
方式_initResource
方式之間的區別?這種差異是否意味着工作中的嚴重問題?
另外,請參閱http://stackoverflow.com/a/6744122/131824 –