CakePHP : Manual11/Conventions

Соглашения Cake


Оглавление документа

Соглашения, да?

Да, соглашения. Согласно thefreedictionary:
  1. Основное взаимосогласие или принятие определенных практик или позиций: По соглашению, север находится вверху большинства карт.
  2. Практика или процедура широко проглядываемая в группе, особенно для облегчения социального взаимодействия проще: соглашение о рукопожатии.
  3. Широко-используемое и принятое устройство или техника, как драма, литература, или рисование: театральное соглашение об отходах в сторону (чтобы прошептать что-то).

Соглашение в Cake это то, что творит чудеса, прочтите automagic. Не стоит упоминать даже о популяризации соглашения на конфигурацию, Cake увеличивает вашу продуктивность до пугающего уровня без потерь в гибкости. Соглашения в cake действительно просты и интуитивно понятны. Они были извлечены у лучших практиков хороших веб-разработчиков, которые использовались годами на поле веб-разработки.

Имена файлов

Имена файлов подчеркнуты. Как основное правило, если у вас есть класс My Nifty Class, тогда в Cake, этот файл должен быть назван my_nifty_class.php.

Так что если вы найдете snippet вы автоматически узнаете что:
  1. Если это имя контроллера Kisses And Hugs Controller, то имя его файла kisses_and_hugs_controller.php
  2. Если это имя модели Option Value, тогда имя файла будет option_value.php
  3. Если это имя компонента My Handy Component тогда имя его файла должно быть my_handy.php
  4. Если это имя хелпера Best Helper Ever, тогда имя файла должно быть best_helper_ever.php

Модели

  1. Имена классов моделей число единичное.
  2. Имя класса модели пишется с большой буквы для однословной модели, и КаждоеСловоИмениМодели (без пробелов) с большой в многословном названии. (Примеры: Человек, Обезьяна, СтекляннаяДверь, РеальноСмешнаяШтука)
  3. Соединенные таблицы методом многие-к-многим должны быть названы: по-алфавиту_первая_таблица_множественное_число_по-алфавиту_вторая_таблица_множественное_число например: tags_users
  4. Имена файлов моделей используют нижний регистр и подчеркивание. (Примеры: person.php, monkey.php, glass_door.php, line_item.php, really_nifty_thing.php)
  5. Таблицы базы данных, относящиеся к моделям также используют нижний регистр и подчеркивание – но они в множественном числе. (Примеры: people, monkeys, glass_doors, line_items, really_nifty_things)

Соглашение о присвоении имен Cake PHP стремиться упростить написание кода и сделать его более читабельным. Если вы сможете добиться этого своим способом, замените наш.
  1. Имя модели: Установите var $name в определение вашей модели.
  2. Таблицы базы данных, относящиеся к моделям: установите var $useTable в определение вашей модели.

Контроллеры

  1. Имена классов контроллеров в множественном числе.
  2. Схема названий контроллеров та же что и моделей, только в конце добавляется окончание 'Controller'. (Примеры: People Controller, Monkeys Controller, Glass Doors Controller, Line Items Controller, Really Nifty Things Controller)
  3. Имена файлов также как и у моделей, только с окончанием '_controller'. Так что если у вас есть Posts Controller, то имя его файла должно быть posts_controller.php (Примеры: people_controller.php, monkeys_controller.php, glass_doors_controller.php, line_items_controller.php, really_nifty_things_controller.php)
  4. Для защищенной видимости, именам действий контроллера должны передавать '-'.
  5. Для приватной видимости, именам действий контроллера должны передавать '--'.

Отображения

  1. Отображения называются как действие, которое они отображают.
  2. Имя файла отображения такое же как имя действия, в нижнем регистре. (Примеры: People Controller::worldPeace() ожидает отображения /app/views/people/world_peace.thtml; Monkeys Controller::banana() ожидает отображения /app/views/monkeys/banana.thtml.)

Вы можете заставить действие рендерить определенное отображение вызвав $this->render('name_of_view_file_without_dot_thtml'); в конце действия.

Хелперы

  1. Имя класса хелперов – каждое слово в имени с большой буквы, окончание “Helper”, имя файла с подчеркиванием. (Примеры: class My Helper Helper это хелпер /app/views/helpers/my_helper.php.)

Включается в контроллере масивом $helpers=array('Html','MyHelper'); в отображении доступен с $myHelper->method().

Компоненты

  1. Имя класса компонента такое же как у хелперов, но окончание “Component”, имя файла с подчеркиванием. (Пример: класс My Component Component расширяет объект в /app/controllers/components/my_component.php.)

Включается в контроллер с $components =array('MyComponent'); в контроллере доступен с $this->My Component->method().

Вендоры

Вендоры не следуют никакому соглашению по очевидным причинам: они третьестепенные части кода, у Cake нет контроля над ними.