routeStartup() вызывается до того, как
routeShutdown() вызывается после того, как
маршрутизатор
завершит обработку запроса.
dispatchLoopStartup() вызывается до того,
как preDispatch() вызывается до того, как
диспетчером
будет вызвано действие. Этот обратный
вызов (callback) позволяет реализовать поведение посредника
или фильтра. Через изменение запроса и сброс его
флага диспетчеризации (методом
Zend_Controller_Request_Abstract::setDispatched(false))
текущее действие может быть пропущено и/или заменено на
другое.
postDispatch() вызывается после того, как
действие было вызвано
диспетчером.
Этот обратный вызов позволяет реализовать поведение фильтра
или посредника. Через изменение запроса и сброс его
флага диспетчеризации (методом
Zend_Controller_Request_Abstract::setDispatched(false))
может быть определено новое действие для
диспетчеризации.
dispatchLoopShutdown() вызывается после выхода
getRequest() и getResponse(),
соответственно.
Zend_Controller_Front::registerPlugin(), их можно
регистрировать в любой момент времени. Следующий пример
демонстрирует использование плагина в цепочке контроллеров:
routeStartup() called
\n"); } public function routeShutdown(Zend_Controller_Request_Abstract $request) { $this->getResponse() ->appendBody("routeShutdown() called
\n"); } public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { $this->getResponse() ->appendBody("dispatchLoopStartup() called
\n"); } public function preDispatch(Zend_Controller_Request_Abstract $request) { $this->getResponse() ->appendBody("preDispatch() called
\n"); } public function postDispatch(Zend_Controller_Request_Abstract $request) { $this->getResponse() ->appendBody("postDispatch() called
\n"); } public function dispatchLoopShutdown() { $this->getResponse() ->appendBody("dispatchLoopShutdown() called
\n"); } } $front = Zend_Controller_Front::getInstance(); $front->setControllerDirectory('/path/to/controllers') ->setRouter(new Zend_Controller_Router_Rewrite()) ->registerPlugin(new MyPlugin()); $front->dispatch(); ]]>routeShutdown() called
dispatchLoopStartup() called
preDispatch() called
postDispatch() called
dispatchLoopShutdown() called
]]>getPlugin($class) позволяет извлекать плагин по
имени класса. Если не найден соответствующий плагин, то
возвращается false. Если зарегистрировано более одного плагина
этого класса, то будет возвращен массив.
getPlugins() возвращает весь стек плагинов.
unregisterPlugin($plugin) производит удаление
плагина из стека. Вы можете передавать объект плагина или имя
класса плагина, регистрацию которого вы хотите отменить. Если вы
передаете имя класса, то будут удалены все плагины этого класса.