Что делает return в методах _init класса ZF Bootstrap?
Вот образец _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. Но в то же время на той же странице быстрого запуска 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
путь и _initResource
путь? Означает ли это различие в работе что-то серьезное?
1 ответ
Хотя вы бы получили свои ответы через некоторое время, пройдя через руководство по Zend. Однако я постараюсь ответить на ваши вопросы.
1. зачем возвращать?
Хотя нет необходимости возвращать, и это не является обязательным. Возврат используется только для хранения
Переменная в контейнере Zend, который обычно является реестром Zend. Эта хранимая переменная может быть доступна вам в любом месте. Если вы не вернете единственное отличие, которое будет иметь место, это то, что вы нигде не сможете получить переменную, При написании ответа нашел следующее в руководстве по Zend. Это обязательно поможет.
В качестве примера рассмотрим базовый вид ресурса:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initView()
{
$view = new Zend_View();
// more initialization...
return $view;
}
}
You can then check for it and/or fetch it as follows:
// Using the has/getResource() pair:
if ($bootstrap->hasResource('view')) {
$view = $bootstrap->getResource('view');
}
// Via the container:
$container = $bootstrap->getContainer();
if (isset($container->view)) {
$view = $container->view;
}
2. Где бутстрап хранит его и почему?
Я думаю, что первый отвечает на это.
3. Какой объект вызывает этот метод и кто получает результат?
Объект Application обычно вызывает начальную загрузку (в самом начале), и вы также можете вызывать отдельные методы ресурса через объект. Но если вы не укажете никаких параметров при вызове метода начальной загрузки, все методы ресурса (например, _initView(),_initRouters()) будут выполнены.
4.Что произойдет, если нет возврата.
Ответил 1, я думаю.
Это содержит почти все ответы, которые вы ищете. http://framework.zend.com/manual/1.12/en/zend.application.theory-of-operation.html
Надеюсь, поможет.
ОБНОВИТЬ:
Видел ваше обновление.. На самом деле это вопрос выбора, я думаю.
Где вы хотите определить свои ресурсы, зависит от вас.
Работал над проектом, в котором в файле application.ini определены только основные ресурсы, а большая часть ресурсов загружается из начальной загрузки...
Опять же, это ваш выбор, однако вы почувствуете комфорт и гибкость при использовании начальной загрузки для загрузки ресурсов (например, определение пользовательских маршрутов и т. Д.).
Это то, что я чувствую.