0 follower

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

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

RootAlias.path.to.target

где RootAlias - псевдоним существующей директории. Путем вызова метода YiiBase::setPathOfAlias() мы можем определить новые псевдонимы путей. Для удобства следующие системные псевдонимы уже предопределены:

  • system: соответствует директории фреймворка;
  • application: соответствует базовой директории приложения;
  • webroot: соответствует директории, содержащей входной скрипт. Этот псевдоним доступен, начиная с версии 1.0.3.
  • ext: соответствует директории, содержащей все сторонние расширения. Этот псевдоним доступен, начиная с версии 1.0.8.

Кроме того, в случае, если приложение использует модули, системный псевдоним предопределяется для каждого идентификатора модуля и соответствует пути к этому модулю. Эта возможность доступна, начиная с версии 1.0.3.

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

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

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

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

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

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

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

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

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

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