CakePHP имеет не только классы работы с Контроллером, Моделью и Отображением, но так же и некоторые дополнительные классы и объекты, которые делают создание приложений в архитектуре MVC более быстрым и приятным. Компоненты, Поведения и Помощники являются классами, которые расширяют основные, служат для множественного использования и быстро добавляют функциональность к базовым классам MVC в приложениях. Сейчас мы работаем только с основными классами, поэтому узнаем как использовать дополнительные несколько позже.
Компоненты предоставляют вспомогательные средства Контроллерам. Если у вас есть участки логики, которые используются несколькими Контроллерами, то Компонент — это то, что вам поможет. Например Компонент EmailComponent создает и отправляет письмо. Эта функциональность может потребоваться несколько раз в приложении. Поэтому целесообразно держать логику создания и отправки письма в Компоненте, который можно подключить в любой контроллер.
Контроллеры также снабжены функциями обратного вызова. Эти функции полезны в том случае, если вам необходимо вставить какую-то логику между основными действиями Контроллера. Существуют следующие функции:
Помощник (Helper) — это класс, который расширяет возможности Отображения. Это что-то вроде Компонента в Контроллерах, но только для раширения возможностей Отображения. Например Помощник AjaxHelper помогает сделать Ajax запросы в отображениях максимально простыми.
Большинство приложений имеют куски кода, которые используются неоднократно. CakePHP помогает при повторном отображении кусков кода при помощи Разметки (Layout) и Элементов. По умолчанию, каждое готовое Отображение помещается в единую разметку (самый общий дизайн). Элементы же используются когда необходимо несколько раз использовать небольшой кусок в нескольких Отображениях.
Расширения, которые позволяют выносить участки кода из Модели, называются Поведения (Behavior). Например, если вы храните информацию о пользователе в древовидной структуре, то можете выделить пользовательскую Модель в Поведение и получить простую функциональность по добавлению, удалению или редактированию узлов этого дерева.
Модели так же поддерживают другой класс под названием DataSource. DataSources — это абстракция модели, которая позволяет манипулировать различными типами данных. Хотя обычно с Моделью работают, как с базой данных, вам ничего не стоит написать DataSource, чтобы работать с Моделью, как с RSS-потоком, CSV файлами, записями LDAP или событиями iCal. DataSources позволяет вам связать записи различных источников, а не только подсоединяться при помощи SQL. Например, вы можете указать, что ваша LDAP Модель связана с несколькими iCal записями.
Как и Контроллеры, Модели предоставляют некоторые функции обратного вызова:
По именам этих функций должно быть понятно когда они вызываются. Обязательно прочитайте о них подробнее в главе о Моделях.
Вы можете определить расширения для Контроллеров, Моделей и Отображений заранее для всех действий системы. AppController (располагается в /app/app_controller.php), AppHelper (располагается в /app/app_helper.php) и AppModel (располагается в /app/app_model.php) — это классы в которых вы можете определить Компоненты, Помощники и Поведения, которые будут доступны по всей системе.
Cake считает, что URL, введенный вами, указывает на метод контроллера и передает ему параметры. Например URL «/controller/action/var1/var2» вызывает Controller::action($var1, $var2). Но вы можете поменять эту логику при помощи Роутов.
Некоторые возможности вашего приложения могут быть достойны вынесения в отдельные программы. Плагин — это пакет Моделей, Контроллеров и Отображений для достижения определенной цели, который может подключаться сразу к нескольким приложениям. Например Система управления пользователями или Система блога могут быть универсальными и подключаться на несколько сайтов одновременно.
Может быть, стоит перевести «Роуты», как «маршруты»? Вроде, вполне логично...
Думал над этим, но посмотрел на форумах, поговорил с людьми... Все же все понимают сходу что такое роуты, чего не скажешь о маршрутах. Решил оставить так.
Видимо сдешний движёк этого не умеет, а руками прописать лениво. Но это же халява. Дарёному коню...