Home PageКаталог Изменения НовыеКомментарии Пользователи Регистрация
CakePHP: Manual/BasicPrinciples/Structure ...

Структура CakePHP


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). Но вы можете поменять эту логику при помощи Роутов.


Некоторые возможности вашего приложения могут быть достойны вынесения в отдельные программы. Плагин — это пакет Моделей, Контроллеров и Отображений для достижения определенной цели, который может подключаться сразу к нескольким приложениям. Например Система управления пользователями или Система блога могут быть универсальными и подключаться на несколько сайтов одновременно.


<< Понимание архитектуры MVC | Файловая структура >>


 
Комментарии

Может быть, стоит перевести «Роуты», как «маршруты»? Вроде, вполне логично...

AleksandroSemjonov (2007-12-23 04:14:46)

Думал над этим, но посмотрел на форумах, поговорил с людьми... Все же все понимают сходу что такое роуты, чего не скажешь о маршрутах. Решил оставить так.

AntonIsaykin (2007-12-23 12:40:42)

Видимо сдешний движёк этого не умеет, а руками прописать лениво. Но это же халява. Дарёному коню...

fponp.feosky.net (2008-10-02 17:05:05)
Как раз маршруты звучало бы как то дико. Я за роуты.
213.129.97.170 (2009-05-13 18:02:09)
за роут, однозначно! =)
137-16-135-95.pool.ukrtel.net (2009-08-05 01:44:38)

Есть замечательное слово: алиас, синоним.
o.dp.ua (2010-04-28 13:02:42)
Добавить комментарий:

Файлов нет. [Показать файлы/форму]