Соглашения
Мы большие поклонники соглашений. Вы потратите немного времени на изучение соглашений, зато в будущем вы не будете терять его перечитывая конфигурационные файлы. Следуя соглашениям, вы получите полную функциональность, которую может предоставить Cake. Если над проектом работают несколько разработчиков, то соглашения помогут им быстро понять, о чем идеть речь в исходных файлах.
Соглашения CakePHP выработались десятилетней практикой сайтостроения и лучшими программистами. Хоть мы и рекомендуем придерживаться нижеследующих правил — в CakePHP почти все из них могут быть переопределены, что особенно удобно при работе с системой.
Файлы и имена классов
Класс с названием из двух и более слов называется без пробела с заглавных букв все слова, в то время как файл с этим классом должен содержать знак подчеркивания вместо пробела. Например, класс с названием
KissesAndHugsController должен храниться в файле
kisses_and_hugs_controller.php.
Хотя название типа класса совсем не обязательно должно содержаться в названии файла с этим классом. Например, класс
EmailComponent расположен в файле
email.php, а класс
HtmlHelper в файле с названием
html.php.
Соглашение о Моделях
Название класса модели всегда записывается в единственном числе. Названия вроде
Person,
BigPerson и
ReallyBigPerson — типичные представители названий моделей.
Названия таблиц в базе данных, которым соответствует название Модели, должны записываться во множественном числе и через знак подчеркивания, если включают несколько слов. Для перечисленных моделей таблицы должны называться как
persons,
big_persons и
really_big_persons.
Таблицы объединений, использующиеся при схеме связи
hasAndBelongsToMany, должны называться именами объединяемых таблиц во множественном числе через знак подчеркивания. Названия двух таблиц в составе новой должны следовать в алфавитном порядке (не
zebras_apples, но
apples_zebras). Например, таблица для объединения записей (модель
Post) и тегов к ним (модель
Tag) должна называться
posts_tags.
Соглашение о Контроллерах
Названия классов Контроллеров имеют множественное число и слово Controller на конце. Если название состоит более чем из одного слова, то пробел не ставится и каждое следующее слово названия пишется с заглавной буквы.
PeopleController,
BigPeopleController и
ReallyBigPeopleController — вот обычные имена контроллеров.
Первая функция в классе Контроллера, которую вы обычно определяете называется
index(). Если был вызван Контроллер, но в запросе не было указано действие, то вызывается
index(). Например если вы запрашиваете
http://www.example.com/apples/, то вызывается Контроллер
ApplesController и дейтвие
index(), если же действие было определено (
http://www.example.com/apples/view), то вызовется контроллер (
ApplesController) и определенное запросом действие (
view()).
Вы можете изменить видимость фунции Контроллера, добавив знак подчеркивания в ее начало. В этом случае функцию будет невозможно запустить из браузера, но она останется для внутреннего пользования.
Соглашение об Отображениях
Шаблоны Отображения именуются так же как функции внутри класса Контроллера. Например, если в классе Контроллера
People Controller объявлена функция
getReady(), то
Cake PHP будет искать шаблон этого Отображения по адресу
/app/views/people/get_ready.ctp.
Вот шаблон местоположения шаблона:
/app/views/<Контроллер>/<имя_функции_через_подчеркивание>.ctp.
Называя ваши файлы, классы и функции по стандартам Cake, вы получаете максимальную функциональность без постоянного изменения файлов конфигурации. Посмотрите на последний пример в главе о соглашениях:
- Таблица базы данных: people
- Класс модели: Person, расположен в /app/models/person.php
- Класс контроллера: «PeopleController", расположен в /app/controllers/people_controller.php
- Шаблон отображения расположен в /app/views/people/index.ctp
При использовании этих соглашений CakePHP знает, что при запросе адреса
http://example.com/people/ необходимо вызвать функцию
index() Контроллера
PeopleController, где уже автоматически доступна модель
Person (с подключенной таблицей
people из базы данных) и создать нужное отображение. Ни одна из этих связей не была настроена какими-нибудь конфигурационными файлами, кроме как простым созданием файлов и классов, которые вам пришлось бы объявить в любом случае.
Сейчас, когда вы познакомились с основами, можно отвлечься и пройти по главе «Создаем Блог», расположенной в конце руководства.
<< Стандартный запрос CakePHP |
Разработка с CakePHP >>