Псевдоніми шляху широко використовуються в Yii. Псевдонім асоціюється із директорією або шляхом до файлу. При його вказуванні використовується точковий синтаксис, подібний із широко використовуваним форматом просторів імен:
RootAlias.path.to.target
де RootAlias — псевдонім існуючої директорії.
За допомого YiiBase::getPathOfAlias() ми можемо перетворити псевдонім
у відповідний йому шлях. наприклад, system.web.CController буде
перетворений у yii/framework/web/CController.
Також, ми можемо використовувати YiiBase::setPathOfAlias() для визначення нових кореневих псевдонімів.
Для зручності, наступні системні псевдоніми вже визначені:
system: відповідає директорії фреймворка;zii: відповідає директорії бібліотеки розширень Zii;application: відповідає базовій директорії додатку;webroot: відповідає директорії, яка містить вхідний скрипт.ext: відповідає директорії, яка містить всі сторонні розширення.Крім того, якщо додаток використовує модулі, то
у кожного модуля є співпадаючий з його 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.
Be the first person to leave a comment
Please login to leave your comment.