Вот пример _init
метода Zend_Bootstrap
из руководство ZF. В конце есть 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. а>.
Пример № 22. Пример конфигурации ресурса представления
Ниже приведен пример фрагмента INI, показывающий, как настроить ресурс представления.
resources.view.encoding = "UTF-8"
resources.view.basePath = APPLICATION_PATH "/views/"
И кажется удобным и разумным инициировать View
таким образом, из файла application.ini
вместе со всеми остальными ресурсами, о которых пишут на странице Zend_Application Quick Start. Но в то же время на той же странице Zend_Application Quick Start написано, что 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
способом и _initResource
способом? Означает ли эта разница что-то серьезное в работе?