К подключаемым модулям Zend_Controller_Front
относятся следующие (от здесь ):
routeStartup()
вызывается до того, как Zend_Controller_Front
вызовет маршрутизатор для оценки запроса по зарегистрированным маршрутам.
routeShutdown()
вызывается после того, как маршрутизатор завершает маршрутизацию запроса.
dispatchLoopStartup()
вызывается до того, как Zend_Controller_Front
входит в цикл отправки.
preDispatch()
вызывается до того, как диспетчер отправляет действие. Этот обратный вызов учитывает поведение прокси или фильтра. Изменяя запрос и сбрасывая его отправленный флаг (через Zend_Controller_Request_Abstract::setDispatched(false)
), текущее действие можно пропустить и / или заменить.
postDispatch()
вызывается после того, как диспетчер отправил действие. Этот обратный вызов учитывает поведение прокси или фильтра. Изменяя запрос и сбрасывая его отправленный флаг (через Zend_Controller_Request_Abstract::setDispatched(false)
), можно указать новое действие для отправки.
dispatchLoopShutdown()
вызывается после выхода Zend_Controller_Front из цикла отправки.
Так что dispatchLoopShutdown()
- это ваш хук, который нужно сделать - это последнее, что Zend_Controller_Front::dispatch()
делает перед возвратом или отправкой ответа.
Другим вариантом может быть, даже если они были разработаны для чего-то совершенно другого, использование фильтров Zend_View
. Эти фильтры можно добавить к экземпляру Zend_View
и вызвать в Zend_View::render()
. Фильтр - это просто экземпляр класса, который предоставляет filter($buffer)
-метод, который возвращает отфильтрованный $buffer
. Но использование этого интерфейса для чего-то, не связанного с фильтрацией выхода, на самом деле, кажется, не совсем правильным.
Я лично думаю, что плагин dispatchLoopShutdown()
будет подходить.