Мы большие поклонники соглашений. Вы потратите немного времени на изучение соглашений, зато в будущем вы не будете терять его перечитывая конфигурационные файлы. Следуя соглашениям, вы получите полную функциональность, которую может предоставить 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? – это единственное число.
эм... опять чего-то недопонимаю... получается что контроллер каждый раз при обращении автоматом загружает модель, возникает исконно китайский вопрос – нахуа? и кто сказал что наша модель должна быть базовой? А теперь представьте что я хочу реализовать аспекты? .... мягко говоря не удобно%
не хочешь загружать модель – пиши в контроллере
var $uses = null;