Files
yii/docs/guide/ru/basics.namespace.txt
2011-01-16 14:55:27 +00:00

124 lines
8.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Псевдоним пути и пространство имен
==================================
Псевдонимы пути широко используются в Yii.
Псевдоним ассоциируется с директорией или путем к файлу.
При его указании используется точечный синтаксис, схожий с широко используемым форматом пространств
имен:
~~~
RootAlias.path.to.target
~~~
где `RootAlias` — псевдоним существующей директории.
При помощи [YiiBase::getPathOfAlias()] мы можем преобразовать псевдоним
в соответствующий ему путь. К примеру, `system.web.CController` будет
преобразован в `yii/framework/web/CController`.
Также мы можем использовать [YiiBase::setPathOfAlias()] для определения новых
корневых псевдонимов.
Корневой псевдоним
------------------
Для удобства, следующие системные псевдонимы уже предопределены:
- `system`: соответствует директории фреймворка;
- `zii`: соответствует директории [библиотеки расширений Zii](/doc/guide/extension.use#zii-extensions);
- `application`: соответствует [базовой директории приложения](/doc/guide/basics.application#application-base-directory);
- `webroot`: соответствует директории, содержащей [входной скрипт](/doc/guide/basics.entry). Этот псевдоним доступен, начиная с версии 1.0.3.
- `ext`: соответствует директории, содержащей все сторонние [расширения](/doc/guide/extension.overview). Этот псевдоним доступен, начиная с версии 1.0.8.
Кроме того, в случае, если приложение использует [модули](/doc/guide/basics.module), системный псевдоним предопределяется для каждого идентификатора модуля и соответствует пути к этому модулю. Эта возможность доступна, начиная с версии 1.0.3.
Импорт классов
--------------
Используя псевдонимы, очень удобно импортировать описания классов.
К примеру, для подключения класса [CController] можно вызвать:
~~~
[php]
Yii::import('system.web.CController');
~~~
Использование метода [import|YiiBase::import] более эффективно, чем `include` и `require`, поскольку
описание импортируемого класса не будет включено до первого обращения (реализовано через механизм
автозагрузки классов PHP). Импорт
одного и того же пространства имён также происходит намного быстрее, чем при использовании `include_once` и
`require_once`.
> Tip|Подсказка: Если мы ссылаемся на класс фреймворка, то нет необходимости импортировать или включать их.
Все системные классы Yii уже импортированы заранее.
### Использование таблицы классов
Начиная с версии 1.1.5, Yii позволяет предварительно импортировать пользовательские
классы через тот же механизм, что используется для классов ядра. Такие классы
могут использоваться где угодно в приложении без необходимости их предварительного
импорта или подключения. Данная возможность отлично подходит для фреймворка или библиотеки,
использующих Yii.
Для импорта набора классов, выполните следующий код до вызова [CWebApplication::run()]:
~~~
[php]
Yii::$classMap=array(
'ClassName1' => 'path/to/ClassName1.php',
'ClassName2' => 'path/to/ClassName2.php',
......
);
~~~
Импорт директорий
-----------------
Можно использовать следующий синтаксис для того, чтобы импортировать целую директорию, а файлы классов,
содержащиеся в директории, будут подключены автоматически при необходимости.
~~~
[php]
Yii::import('system.web.*');
~~~
Помимо [import|YiiBase::import], псевдонимы также используются во многих других местах, где есть ссылки на классы.
Например, псевдоним может быть передан методу [Yii::createComponent()] для создания экземпляра соответствующего
класса, даже если этот класс не был предварительно включен.
Пространство имён
-----------------
Пространства имен служат для логической группировки
имен классов, чтобы их можно было отличить от других, даже если их имена совпадают.
Не путайте псевдоним пути с пространством имён. Псевдоним пути — всего лишь
удобный способ именования файлов и директорий. К пространствам имён он не имеет никакого
отношения.
> Tip|Подсказка: Так как версии 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`.
<div class="revision">$Id: basics.namespace.txt 2630 2010-11-08 21:13:33Z qiang.xue $</div>