Я думаю, что порядок выполнения является init (), предварительная отправка (), и затем действие () называют.
Я должен инициализировать свои переменные, которые распространены среди всех действий в init () или предварительная отправка ()? Я видел, что люди используют обе функции для инициализации. Вероятно, поскольку имя предлагает, чтобы оно было сделано в init (), но тогда какой материал вошел бы в предварительную отправку ()?
Что происходит между init () и предварительной отправкой () вызовы функции?
Сначала вызывается preDispatch ()
для экземпляров Zend_Controller_Plugin_Abstract
. Здесь у вас есть объекты запроса и ответа, поэтому вы можете отфильтровать запрос или выполнить некоторую подготовку, используя информацию из запроса.
init ()
из Zend_Controller_Action
вызывается следующим как часть конструктора. Он нужен для того, чтобы помочь вам инициализировать ваш контроллер, без необходимости переопределять и повторять подпись конструктора ( Zend_Controller_Action :: __ contruct ()
).
Здесь вызывается метод контроллера preDispatch ()
. Вы можете вызвать $ request-> setDispatched (false)
, чтобы пропустить текущее действие - не уверен, что вы можете сделать это в init ()
Затем вызывается ваш метод действия ( viewAction ()
например). Здесь вы выполняете свою обычную работу, например, извлекаете материал из модели и заполняете представление.
Итак, различие теперь должно быть ясным:
preDispatch ()
есть routeStartup
и другие ), init
или preDispatch ()
, Что происходит между вызовами функций
init ()
иpreDispatch ()
?
Практически ничего - выполняется preDispatch ()
, и если у вас нет Не вызвал $ request-> setDispatched (false)
, действие выполнено.