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

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

RootAlias.path.to.target

де RootAlias — псевдонім існуючої директорії.

За допомого YiiBase::getPathOfAlias() ми можемо перетворити псевдонім у відповідний йому шлях. наприклад, system.web.CController буде перетворений у yii/framework/web/CController.

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

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

Для зручності, наступні системні псевдоніми вже визначені:

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

2. Імпорт класів

Використовуючи псевдоніми, дуже зручно імпортувати описи класів. Наприклад, для підключення класа 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',
    ......
);

3. Імпорт директорій

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

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

Окрім import, псевдоніми також використовуються у багатьох інших місцях, де є посилання на класи. Наприклад, псевдонім може бути переданий методу Yii::createComponent() для створення екземпляру відповідного класу, навіть якщо цей клас не був попередньо включений.

4. Простір імен

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

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

5. Класи у просторах імен

Клас у просторі імен — будь-який клас, описаний у неглобальному просторі імен. Наприклад, клас 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 $

Be the first person to leave a comment

Please to leave your comment.