Home PageКаталог Изменения НовыеКомментарии Пользователи Регистрация
CakePHP: Manual/BasicPrinciples/Conventions ...
Это старая версия Manual/BasicPrinciples/Conventions за 2008-01-17 13:17:12..

Соглашения


Мы большие поклонники соглашений. Вы потратите немного времени на изучение соглашений, зато в будущем вы не будете терять его перечитывая конфигурационные файлы. Следуя соглашениям, вы получите полную функциональность, которую может предоставить 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, вы получаете максимальную функциональность без постоянного изменения файлов конфигурации. Посмотрите на последний пример в главе о соглашениях:


При использовании этих соглашений CakePHP знает, что при запросе адреса http://example.com/people/ необходимо вызвать функцию index() Контроллера PeopleController, где уже автоматически доступна модель Person (с подключенной таблицей people из базы данных) и создать нужное отображение. Ни одна из этих связей не была настроена какими-нибудь конфигурационными файлами, кроме как простым созданием файлов и классов, которые вам пришлось бы объявить в любом случае.


Сейчас, когда вы познакомились с основами, можно отвлечься и пройти по главе «Создаем Блог», расположенной в конце руководства.


 
Комментарии

People Controller? – это единственное число.

79-126-38-252.dynamic.mts-nn.ru (2008-01-23 18:48:57)

Да? А мне кажется что множественное :-)

AntonIsaykin (2008-01-23 23:19:37)

и чтобы поставить точку в спорах – /cake/libs/inflector.php

EvilBloodyDemon? (2008-01-24 08:25:57)

А именно строка 88:

'/(p)erson$/i' => '\1eople',

AntonIsaykin (2008-01-24 09:25:37)

эм... опять чего-то недопонимаю... получается что контроллер каждый раз при обращении автоматом загружает модель, возникает исконно китайский вопрос – нахуа? и кто сказал что наша модель должна быть базовой? А теперь представьте что я хочу реализовать аспекты? .... мягко говоря не удобно%

host-81-176-8-75.ttn.ru (2008-07-29 18:05:13)

не хочешь загружать модель – пиши в контроллере
var $uses = null;

89.20.111.6.permonline.ru (2008-09-13 18:19:22)
Мне табла нужна в единственном числе, и я не хочу создавать модель для таблы.
storm.idegp.com (2009-03-12 16:53:23)

последнее на русский переводится как «многие-ко-многим»
client151-42.nevsk.tvoe.tv (2009-09-13 05:17:35)
красота! Он же «изначально написан как клон Ro R?" !!! ))) Это радует.
host137-218-155-90.butovo.com (2010-07-13 20:41:31)
надеюсь шаловливые ручки не сильно отклонились от Ro R?
host137-218-155-90.butovo.com (2010-07-13 20:42:05)
«Например, если в классе Контроллера People Controller? объявлена функция getReady()"

> у класса нет функций, есть методы и есть статичные методы (они же методы класса)
host137-218-155-90.butovo.com (2010-08-03 18:40:49)
как же парит zf со своими подчеркиваниями. тут же красота
unalloted.zaporozhye.net (2010-08-19 16:03:37)
Добавить комментарий:

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