Соглашения

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 рекомендует именовать переменные, функции и классы, используя CamelCase, что подразумевает написание каждого слова в имени с большой буквы и соединение их без пробелов. Первое слово в имени переменных и функций должно быть написано в нижнем регистре, чтобы отличать их от имён классов (например, $basePath, runController(), LinkPager). Для полей класса с видимостью private рекомендуется использовать знак подчеркивания в качестве префикса (например, $_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 не требует строгого следования этим правилам.