# Псевдонимы ¶

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

    // псевдоним конкретного файла, содержащего класс \foo\Bar
    Yii::setAlias('@foo/Bar.php', '/definitely/not/foo/Bar.php');

> Примечание: псевдоним пути к файлу или 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`: базовый путь текущего приложения.
- `@runtime`: директория runtime текущего приложения.
- `@vendor`: директория 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');