Псевдоніми
Псевдоніми використовуються для позначення шляхів до файлів або URL адрес і допомагають уникнути використання абсолютних шляхів
або URL в коді. Для того, щоб не переплутати псевдонім із звичайним шляхом до файлу або URL, він повинен починатися з @
. В Yii
є безліч заздалегідь визначених псевдонімів. Наприклад, @yii
вказує на директорію, в яку був встановлений
Yii framework, а @web
можна використовувати для отримання базового URL поточного додатку.
Створення псевдонімів
Для створення псевдоніма шляху до файлу або URL використовується метод [[Yii::setAlias()]]:
// псевдонім шляху до файлу
Yii::setAlias('@foo', '/path/to/foo');
// псевдонім URL
Yii::setAlias('@bar', 'http://www.example.com');
Примітка: псевдонім шляху до файлу або URL не обов'язково вказує на існуючий файл або ресурс.
Використовуючи вже заданий псевдонім, ви можете отримати на основі нього новий без виклику [[Yii :: setAlias ()]]. Зробити це можна, додавши в його кінець /
, за яким слід один або більше сегментів шляху. Псевдоніми, визначені за допомогою
[[Yii::setAlias()]], є кореневими псевдонімами, в той час як отримані з них називаються похідними псевдонімами. На приклад, @foo
є кореневим псевдонімом, а @foo/bar/file.php
— похідним.
Ви можете задати новий псевдонім, використовуючи раніше створений псевдонім (не важливо, кореневої він чи похідний):
Yii::setAlias('@foobar', '@foo/bar');
Кореневі псевдоніми, як правило, створюються на етапі попереднього завантаження (bootstrapping).
Наприклад, ви можете викликати [[Yii::setAlias()]] у вхідному скрипті. Для зручності, в
додатку (Application) передбачено властивість aliases
, яке можна задати через
конфігурацію додатку:
return [
// ...
'aliases' => [
'@foo' => '/path/to/foo',
'@bar' => 'http://www.example.com',
],
];
Перетворення псевдонімів
Метод [[Yii :: getAlias ()]] перетворює кореневої псевдонім в шлях до файлу або URL, який цей псевдонім представляє. Цей же метод може працювати і з похідними псевдонімами:
echo Yii::getAlias('@foo'); // виведе: /path/to/foo
echo Yii::getAlias('@bar'); // виведе: http://www.example.com
echo Yii::getAlias('@foo/bar/file.php'); // виведе: /path/to/foo/bar/file.php
Шлях або URL, представлений похідним псевдонімом, визначається шляхом заміни в ньому частині, що відповідає кореневого псевдоніму, на відповідний йому шлях або URL.
Примітка: Метод [[Yii :: getAlias ()]] не перевіряє фактичного існування одержуваного шляху або URL.
Кореневої псевдонім може містити знаки '/'. При цьому метод [[Yii::getAlias()]] коректно визначить, яка частина псевдоніма є кореневої і вірно сформує шлях або URL:
Yii::setAlias('@foo', '/path/to/foo');
Yii::setAlias('@foo/bar', '/path2/bar');
Yii::getAlias('@foo/test/file.php'); // виведе: /path/to/foo/test/file.php
Yii::getAlias('@foo/bar/file.php'); // виведе: /path2/bar/file.php
Якби @foo/bar
не був оголошений кореневим псевдонімом, остання строка вивела б /path/to/foo/bar/file.php
.
Використання псевдонімів.
Псевдоніми розпізнаються в багатьох частинах Yii без необхідності попередньо викликати [[Yii::getAlias()]] для отримання шляху або URL. Наприклад, [[yii\caching\FileCache::cachePath]] приймає як звичайний шлях до файлу, так і псевдонім шляху завдяки префіксу @
, який дозволяє їх розрізняти.
use yii\caching\FileCache;
$cache = new FileCache([
'cachePath' => '@runtime/cache',
]);
Для того, щоб дізнатися чи підтримує метод або властивість псевдоніми, зверніться до документації API.
Заздалегідь визначені псевдоніми
В Yii заздалегідь визначені псевдоніми для часто використовуваних шляхів до файлів і URL:
-
@yii
: директорія, в якій знаходиться файлBaseYii.php
(директорія фреймворка). -
@app
: [[yii\base\Application::basePath|базовий шлях]] поточного додатку. -
@runtime
: [[yii\base\Application::runtimePath|директорія runtime]] поточного додатку. -
@vendor
: [[yii\base\Application::vendorPath|директорія vendor Composer]. -
@webroot
: вебрут поточного веб додатка (там деindex.php
). -
@web
: базовий URL поточного додатку.
Псевдонім @yii
задається в момент підключення файлу Yii.php
у вхідному скрипті.
Решта псевдоніми задаються в конструкторі додатки в момент застосування конфигурації.
Псевдоніми розширень
Для кожного розширення, встановлюваного через Composer, автоматично задається псевдонім.
Його ім'я відповідає кореневого простору імен розширення відповідно до його composer.json
. Псевдонім представляє
шлях до кореневої директорії пакета. Наприклад, якщо ви встановите розширення yiisoft/yii2-jui
, то вам автоматично стане доступний псевдонім @yii/jui
. Він створюється на етапі первинного завантаження (bootstrapping)
приблизно так:
Yii::setAlias('@yii/jui', 'VendorPath/yiisoft/yii2-jui');