Programmer's Reference Guide
| Zend_Controller - Быстрый стартZend_Controller Quick Start |
Основы Zend_Controller
Система Zend_Controller спроектирована быть легковесной,
модульной и расширяемой. Ее минимализм допускает гибкость и некоторую
свободу в использовании, при этом она достаточно структурирована, чтобы
системы, построенные с использованием Zend_Controller,
использовали некоторые общие соглашения и сходное размещение кода.
Следующая диаграмма отображает рабочий процесс системы, далее подробно описывается их взаимодействие:

Рабочий процесс Zend_Controller осуществляется несколькими
компонентами. Несмотря на то, что для использования этой системы нет
необходимости в совершенном понимании внутренней работы всех этих
компонент, полезно иметь практическое представление об этом процессе.
-
Фронт-контроллер (
Zend_Controller_Front) управляет всем рабочим процессом системыZend_Controller. Это одна из интерпретаций паттерна FrontController.Zend_Controller_Frontобрабатывает все запросы, полученные сервером, и в конечном счете отвечает за делегацию запросов контроллерам действий (Zend_Controller_Action). -
Zend_Controller_Request_Abstract(часто называетсяобъектом запроса) представляет переменные запроса и предоставляет методы для установки и получения имен контроллера, действия и любых параметров запроса. Кроме того, он отслеживает, было ли обработано содержащееся в нем действие диспетчеромZend_Controller_Dispatcher. Расширения абстрактного объекта запроса могут использоваться для инкапсуляции всех переменных запроса, позволяя роутерам извлекать информацию из переменных запроса для того, чтобы устанавливать имена контроллера и действия.По умолчанию используется
Zend_Controller_Request_Http. Он предоставляет доступ ко всем переменным HTTP-запроса. -
Zend_Controller_Router_Interfaceиспользуется для описания маршрутизаторов. Маршрутизация — это процесс исследования переменных запроса для определения того, какой контроллер и какое действие в этом контроллере должны получить этот запрос. Эти контроллер, действие и опциональные параметры устанавливаются в объекте запроса для обработки диспетчеромZend_Controller_Dispatcher_Standard. Маршрутизация производится только один раз: когда вначале получен запрос и до того, как первый контроллер примет управление.Используемый по умолчанию маршрутизатор
Zend_Controller_Router_Rewriteпринимает конечную точку URI в том виде, в котором она определена вZend_Controller_Request_Http, и разлагает ее на контроллер, действие и параметры, основываясь на пути в URL. Например, URLhttp://localhost/foo/bar/key/valueбудет расшифрован следующим образом: контроллерfoo, действиеbarи параметрkeyсо значениемvalue.Zend_Controller_Router_Rewriteможет также использоваться для сопоставления с произвольными путями, за более подробной информацией см. документацию по Rewrite Router -
Zend_Controller_Dispatcher_Interfaceиспользуется для описания диспетчеров. Диспетчеризация — это процесс извлечения контроллера и действия из объекта запроса, нахождения соответствующих файла/класса контроллера и метода действия в классе контроллера. Ситуации, когда соответствующие контроллер или действие не найдены, решаются определением контроллеров и действий по умолчанию.В действии процесс диспетчеризации состоит из инстанцирования класса контроллера и вызова метода действия в этом классе. В отличие от маршрутизации, которая производится только один раз, диспетчеризация производится циклически. Если флаг диспетчеризации объекта запроса сбрасывается, то цикл будет повторяться, при этом вызывается действие, которое будет установлено на данный момент в объекте запроса. Если итерация цикла завершится с установленным флагом диспетчеризации (значение
true) в объекте запроса, то процесс диспетчеризации завершается.По умолчанию используется диспетчер
Zend_Controller_Dispatcher_Standard. Он определяет контроллеры как классы с именами, завершающимися словом Controller, и в которых все слова начинаются со сточной буквы, методы действий — как методы с именами, завершающимися словом Action, и в которых все слова, кроме первого, начинаются со строчной буквы:SomeFooController::barAction. В этом случае на контроллер нужно ссылаться как наsomefoo, а на действие как наbar. -
Zend_Controller_Action— базовая составляющая контроллера действий. Каждый контроллер является отдельным классом, расширяющимZend_Controller_Action, и этот класс должен содержать один или более методов действий. -
Zend_Controller_Response_Abstractопределяет базовый класс ответа, используемый для сбора и возвращения ответов из контроллеров действий. Он собирает как тело ответа, так и заголовки.По умолчанию используется класс
Zend_Controller_Response_Http, который подходит для использования в среде HTTP.
Рабочий процесс Zend_Controller относительно простой.
Запрос получается объектом Zend_Controller_Front,
который в свою очередь вызывает
Zend_Controller_Router_Rewrite для определения того, какой
контроллер (и какое действие в этом контроллере) следует использовать.
Zend_Controller_Router_Rewrite
анализирует URI для установки имени контроллера и имени действия в
запросе. Затем Zend_Controller_Front входит в цикл
диспетчеризации. Он вызывает
Zend_Controller_Dispatcher_Standard, передавая ему
запрос для запуска контроллера и действия, определенных в запросе
(или тех, которые используются по умолчанию). После того, как
контроллер завершит работу, управление возвращается
Zend_Controller_Front. Если предыдущий контроллер
посредством переустановки статуса диспетчеризации в запросе
указал, что должен быть запущен другой контроллер, то цикл
продолжается и выполняется запуск другого контроллера. В противном
случае процесс завершается.
| Zend_Controller - Быстрый стартZend_Controller Quick Start |
Select a Version
Languages Available
Components
Search the Manual
Navigation
- Руководство разработчика
- Руководство разработчика
- Zend_Controller
- Zend_Controller - Быстрый стартZend_Controller Quick Start
- Основы Zend_ControllerZend_Controller Basics
- Фронт-контроллер
- Объект запросаThe Request Object
- Стандартный маршрутизатор: Zend_Controller_Router_RewriteThe Standard Router: Zend_Controller_Router_Rewrite
- ДиспетчерThe Dispatcher
- Контроллеры действийAction Controllers
- Помощники действийAction Helpers
- Объект ответаThe Response Object
- ПлагиныPlugins
- Использование определенной соглашением модульной структуры директорийUsing a Conventional Modular Directory Structure
- ИсключенияMVC Exceptions
- Переход с предыдущих версийMigrating from Previous Versions
