Zend Framework. Роутинг. Роутер.

Роутинг – важный этап при работе веб-приложения, работающего на основе Zend Framework. Работа с роутерами и роутами может быть как тривиальной, так и сложно организованной. Все зависит от нужд и уровня сложности того или иного веб-приложения.

В этой статье мы рассмотрим роутеры и особенности работы с ними. Далее в цикле статей будут освещены все виды роутов, использующихся в Zend Framework.

Роутер, использующийся по умолчанию в ZF, это Zend_Controller_Router_Rewrite. Это вполне логично и обусловлено тем, что данный роутер основан на протоколе HTTP, который безусловно наиболее используем в современном Интернете. Никто не мешает вам выбрать другой роутера для своих нужд или реализовать свой собственный на основе либо интерфейса Zend_Controller_Router_Interface, либо абстрактного класса Zend_Controller_Router_Abstract.

Итак, как известно, роутинг, как этап в одной итерации жизни веб-приложения, происходит только единожды перед процессом диспетчеризации. Суть этого процесса в установлении какой модуль, контроллер, экшн должен быть использован в данном запросе к серверу. Роутинг всего лишь распознает запрос к серверу и записывает информацию о модуле, контроллере и экшене, которые он извлек в данной итерации жизни веб-приложения, в Request объект. Далее итерация переходит к этапу диспетчеризации. По моему вполне логичная вещь.

Роутинг в ZF может использовать несколько типов роутов. Среди них:

- Zend_Controller_Router_Route

- Zend_Controller_Router_Route_Static

- Zend_Controller_Router_Route_Regex

- Zend_Controller_Router_Route_Hostname

- Zend_Controller_Router_Route_Chain

Роутер и роуты неразрывно связаны. Каждый роут регистрируется в роутере и используется далее в процессе жизни приложения.  Для начала инициализируется сам роутер:

 

В любой момент жизни приложения после инициализации мы можем извлечь наш роутер из FrontController так:

 

Для регистрации роута в роутере используется метод addRoute:

 

Кроме того вполне возможно заполнение роутами роутера из файла конфигурации.

 

Стоит отметить, что весьма важен порядок добавления роутов в роутер. Наиболее общие и часто используемые помещайте первыми, а остальные в порядке убывания их важности. Это может помочь сократить время поиска роута по роутеру в случае, если у вас очень много роутов.

Наш роутер так же предоставляет нам еще ряд методов для управления роутами. Среди них:

- addDefaultRoutes(), removeDefaultRoutes() – позволяют устанавливать и удалять роуты по умолчанию.

- assemble() – используется, например в URL View Helper, при работе с сылками.

- getCurrentRoute(), getCurrentRouteName() – как ясно из названий, получают либо роут, либо имя роута, маска которого удовлетворила текущий запрос.

- getRoute(), getRoutes(), hasRoute(), removeRoute() - остальные методы для управления роутами.

Напоследок скажу, что в вашем приложении хорошим решением станет инициализация роутера не в Bootstrap’е, как это казалось бы проще, а создание инициализирующего плагина ForntController‘а, в котором помимо других инициализаций будут инициализироваться и роутер с роутами…

5 комментариев Zend Framework. Роутинг. Роутер.

  1. Пингбэк: Zend Framework. Zend_Controller_Router_Route_Static. | I-paper.ru

  2. Пингбэк: Zend Framework. Zend_Controller_Router_Route_Regex. | I-paper.ru

  3. Пингбэк: Zend Framework. Zend_Controller_Router_Route. | I-paper.ru

  4. Пингбэк: Zend Framework. Route_Regex. | I-paper.ru

  5. Пингбэк: Zend Framework. Route_Static. | I-paper.ru

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">