Угоди

Yii ставить угоди вище за конфігурації. Дотримуючись угод, ви зможете створювати серйозні додатки без необхідності написання та підтримки складних конфігурацій. Звичайно ж, при необхідності Yii може бути змінений за допомогою конфігурацій практично як завгодно.

Нижче представлені угоди, рекомендовані для програмування під Yii. Для зручності приймемо, що WebRoot — це директорія, у яку встановлений додаток.

URL

За замовчуванням, Yii сприймає адреси URL наступного формату:

http://hostname/index.php?r=ControllerId/ActionId

GET-змінна r представляє маршрут, з якого Yii отримує інформацію про контролер і дію. Якщо ActionId не зазначений, контролер буде використовувати дію за замовчуванням (визначену в CController::defaultAction). Якщо ж ControllerId також не зазначений (або змінна r відсутня), буде використаний контролер за замовчуванням (визначений у властивості CWebApplication::defaultController).

Використовуючи CUrlManager можна створювати й застосовувати більш SEO-дружні адреси URL, такі як http://hostname/ControllerId/ActionId.html. Ця можливість докладно описана в розділі Красиві адреси URL.

Код

Yii рекомендує іменувати змінні, функції та класи, використовуючи ГорбатийРегістр (Camel Case), що має на увазі написання кожного слова в імені з великої букви та зʼєднання їх без пробілів. Перше слово в імені змінних і функцій повинне бути написане в нижньому регістрі, щоб відрізняти їх від імен класів (наприклад, $basepath, runController(), LinkPager). Для імен властивостей класу рекомендується використовувати знак підкреслення як префікса (наприклад, $_actionList).

Оскільки простори імен не підтримуються версіями PHP до 5.3.0, рекомендується, щоб імена класів були унікальними для уникнення конфлікту імен із класами сторонніх виробників. Із цієї причини всі імена класів фреймворка мають префікс "C".

Особливе правило для імен класів контролерів — вони повинні бути доповнені словом Controller. При цьому ідентифікатором контролера буде імʼя класу з першою буквою в нижньому регістрі та без слова Controller. Наприклад, для класу Pagecontroller ідентифікатором буде page. Дане правило робить додаток більш захищеним. Воно також робить адреси URL більш зрозумілими ( приміром, /index.php?r=page/index замість /index.php?r=PageController/index).

Конфігурація

Конфігурація — це масив пар ключ-значення, де кожний ключ являє собою імʼя властивості обʼєкта, що конфігурується, а значення — початкове значення відповіднї властивості. Приміром, array('name'=>'My application', 'basePath'=>'./protected') ініціалізує властивості name і basePath відповідними значеннями.

Будь-які властивості обʼєкта, що доступні для запису, можуть бути зконфігуровані. Якщо деякі властивості не зконфігуровані, для них будуть використані значення за замовчуванням. При конфігуруванні властивостей рекомендується вивчити відповідний розділ документації, щоб уникнути завдання некоректних значень.

Файл

Угоди для іменування й використання файлів залежать від їх типів.

Файли класів повинні бути названі так само, як і публічні класи, що містяться в них. Наприклад, клас CController знаходиться в файлі CController.php. Загальний клас — це клас, який може бути використаний будь-якими іншими класами. Кожний файл класів повинен містити максимум один загальний клас. Приватні класи (класи, які можуть бути використані тільки одним загальним класом) повинні перебувати в одному файлі із загальним класом.

Файли представлень повинні мати такі ж імена, як і відображення, що містяться в них. Приміром, відображення index знаходиться в файлі index.php. Файл відображення — це PHP-скрипт, що містить HTML і PHP-код, в основному для задання відображення користувальницького інтерфейсу.

Конфігураційні файли можуть іменуватися довільним чином. Файл конфігурації — це PHP-скрипт, чиє єдине призначення — повертати асоціативний масив, що представляє конфігурацію.

Директорія

В Yii визначений набір директорій для різних цілей. Кожна з них може бути змінена при необхідності.

База даних

Більшість додатків зберігають дані в БД. Ми пропонуємо угоди для таблиць та атрибутів БД. Варто відзначити, що Yii не вимагає суворої відповідності їм.