Последняя стабильная версия: 1.1.9

Полное руководство по Yii

Система Orphus
English | Russian Перевод завершен

Псевдоним пути и пространство имен

Псевдонимы пути широко используются в Yii. Псевдоним ассоциируется с директорией или путем к файлу. При его указании используется точечный синтаксис, схожий с широко используемым форматом пространств имен:

RootAlias.path.to.target

где RootAlias — псевдоним существующей директории.

При помощи YiiBase::getPathOfAlias() мы можем преобразовать псевдоним в соответствующий ему путь. К примеру, system.web.CController будет преобразован в yii/framework/web/CController.

Также мы можем использовать YiiBase::setPathOfAlias() для определения новых корневых псевдонимов.

Корневой псевдоним

Для удобства, следующие системные псевдонимы уже предопределены:

Кроме того, если приложение использует модули, то у каждого модуля имеется совпадающий с его ID корневой псевдоним, указывающий на корень модуля. К примеру, если приложение использует модуль с ID users, то будет определён корневой псевдоним users.

Импорт классов

Используя псевдонимы, очень удобно импортировать описания классов. К примеру, для подключения класса CController можно вызвать:

Yii::import('system.web.CController');

Использование метода import более эффективно, чем include и require, поскольку описание импортируемого класса не будет включено до первого обращения (реализовано через механизм автозагрузки классов PHP). Импорт одного и того же пространства имён также происходит намного быстрее, чем при использовании include_once и require_once.

Подсказка: Если мы ссылаемся на класс фреймворка, то нет необходимости импортировать или включать их. Все системные классы Yii уже импортированы заранее.

Использование таблицы классов

Начиная с версии 1.1.5, Yii позволяет предварительно импортировать пользовательские классы через тот же механизм, что используется для классов ядра. Такие классы могут использоваться где угодно в приложении без необходимости их предварительного импорта или подключения. Данная возможность отлично подходит для фреймворка или библиотеки, использующих Yii.

Для импорта набора классов, выполните следующий код до вызова CWebApplication::run():

Yii::$classMap=array(
    'ClassName1' => 'path/to/ClassName1.php',
    'ClassName2' => 'path/to/ClassName2.php',
    ......
);

Импорт директорий

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

Yii::import('system.web.*');

Помимо import, псевдонимы также используются во многих других местах, где есть ссылки на классы. Например, псевдоним может быть передан методу Yii::createComponent() для создания экземпляра соответствующего класса, даже если этот класс не был предварительно включен.

Пространство имён

Пространства имен служат для логической группировки имен классов, чтобы их можно было отличить от других, даже если их имена совпадают. Не путайте псевдоним пути с пространством имён. Псевдоним пути — всего лишь удобный способ именования файлов и директорий. К пространствам имён он не имеет никакого отношения.

Подсказка: Так как версии PHP до 5.3.0 не поддерживают пространства имен, вы не можете создать экземпляры классов с одинаковыми именами, но различными описаниями. По этой причине все названия классов Yii-фреймворка имеют префикс 'C' (означающий 'class'), чтобы их можно было отличить от пользовательских классов. Для пользовательских классов рекомендуется использовать другие префиксы, сохранив префикс 'C' зарезервированным для Yii-фреймворка.

Классы в пространствах имён

Класс в пространстве имён — любой класс, описанный в неглобальном пространстве имён. К примеру, класс application\components\GoogleMap описан в пространстве имён application\components. Использование пространств имён требует PHP 5.3.0 и выше.

Начиная с версии 1.1.5 стало возможным использование класса из пространства имён без его предварительного подключения. К примеру, мы можем создать новый экземпляр application\components\GoogleMap без явного подключения соответствующего файла. Это реализуется при помощи улучшенного загрузчика классов Yii.

Для того, чтобы автоматически подгрузить класс из пространства имён, пространство имён должно быть названо в том же стиле, что и псевдонимы пути. Например, класс application\components\GoogleMap должен храниться в файле, которому соответствует псевдоним application.components.GoogleMap.

$Id: basics.namespace.txt 3086 2011-03-15 00:04:53Z qiang.xue $