Псевдонимы
Псевдонимы используются для обозначения путей к файлам или 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');
Note: псевдоним пути к файлу или 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.
Note: Метод [[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');