|
| 1 | +# Псевдонимы (алиасы) |
| 2 | + |
| 3 | +Вы можете использовать псевдонимы для представления путей к файлам или URL-адресов, чтобы вам не приходилось жестко |
| 4 | +указывать абсолютные пути или URL-адреса в вашем проекте. Каждый псевдоним должен начинаться с символа `@`, чтобы |
| 5 | +отличаться от обычных файловых путей или URL. Алиас, определенный без предшествующего `@` будет префиксироваться |
| 6 | +с помощью символа `@`. |
| 7 | + |
| 8 | +По умолчанию Yii-приложение имеет несколько алисов, предопределенных в `config/params.php`. Например, алиас `@public` |
| 9 | +представляет корневой путь для web; `@baseUrl` представляет базовый URL для запущенного в текущий момент Web-приложения. |
| 10 | + |
| 11 | +## Определение псевдонимов <span id="defining-aliases"></span> |
| 12 | + |
| 13 | +Вы можете определить какой-либо псевдоним через `config/params.php` приложения: |
| 14 | + |
| 15 | +```php |
| 16 | +return [ |
| 17 | + // ... |
| 18 | + |
| 19 | + 'yiisoft/aliases' => [ |
| 20 | + 'aliases' => [ |
| 21 | + // ... |
| 22 | + |
| 23 | + // an alias of a file path |
| 24 | + '@foo' => '/path/to/foo', |
| 25 | + |
| 26 | + // an alias of a URL |
| 27 | + '@bar' => 'http://www.example.com', |
| 28 | + |
| 29 | + // an alias of a concrete file that contains a \foo\Bar class |
| 30 | + '@foo/Bar.php' => '/definitely/not/foo/Bar.php', |
| 31 | + ], |
| 32 | + ], |
| 33 | +]; |
| 34 | +``` |
| 35 | + |
| 36 | +> Примечание: Псевдонимизированный файловый путь или URL *не обязательно* может ссылаться на существующий файл или |
| 37 | +> ресурс. |
| 38 | +
|
| 39 | +Учитывая определенный псевдоним, вы можете создать новый, добавив слэш `/`, за которым следует один или несколько |
| 40 | +сегментов пути. Например, `@foo` - это корневой псевдоним, а `@foo/bar/file.php` - производный псевдоним. |
| 41 | + |
| 42 | +Вы можете определить псевдоним, используя другой псевдоним (корневой или производный): |
| 43 | + |
| 44 | +```php |
| 45 | +'@foobar' => '@foo/bar', |
| 46 | +``` |
| 47 | + |
| 48 | +Параметр `yiisoft/aliases` инициализирует сервис `Aliases` из [пакета](https://github.com/yiisoft/aliases) |
| 49 | +`yiisoft/aliases`. Используя этот сервис, вы можете установить дополнительные псевдонимы времени выполнения: |
| 50 | + |
| 51 | +```php |
| 52 | +use \Yiisoft\Aliases\Aliases; |
| 53 | + |
| 54 | +public function actionIndex(Aliases $aliases) |
| 55 | +{ |
| 56 | + $aliases->set('@uploads', '@root/uploads'); |
| 57 | +} |
| 58 | +``` |
| 59 | + |
| 60 | +## Использование псевдонимов в конфигурации |
| 61 | + |
| 62 | +Предпочтительно разрешать псевдонимы на уровне конфигурации, чтобы сервисы получали URL-адреса и пути как готовые к |
| 63 | +использованию строки: |
| 64 | + |
| 65 | +```php |
| 66 | +<?php |
| 67 | + |
| 68 | +declare(strict_types=1); |
| 69 | + |
| 70 | +use Yiisoft\Aliases\Aliases; |
| 71 | +use Yiisoft\Cache\File\FileCache; |
| 72 | + |
| 73 | +/* @var $params array */ |
| 74 | + |
| 75 | +return [ |
| 76 | + FileCache::class => static fn (Aliases $aliases) => new FileCache( |
| 77 | + $aliases->get($params['yiisoft/cache-file']['fileCache']['path']) |
| 78 | + ), |
| 79 | +]; |
| 80 | +``` |
| 81 | + |
| 82 | +## Разрешение псевдонимов <span id="resolving-aliases"></span> |
| 83 | + |
| 84 | +Вы можете использовать сервис `Aliases`, чтобы преобразовать псевдоним или производный псевдоним в путь к файлу или URL, |
| 85 | +который он представляет: |
| 86 | + |
| 87 | +```php |
| 88 | +use \Yiisoft\Aliases\Aliases; |
| 89 | + |
| 90 | +public function actionIndex(Aliases $aliases) |
| 91 | +{ |
| 92 | + $foo = $aliases->get('@foo'); // /path/to/foo |
| 93 | + $bar = $aliases->get('@bar'); // http://www.example.com |
| 94 | + $file = $aliases->get('@foo/bar/file.php'); // /path/to/foo/bar/file.php |
| 95 | +} |
| 96 | +``` |
| 97 | + |
| 98 | +Путь/URL, представленный производным псевдонимом, определяется путем замены части корневого псевдонима на |
| 99 | +соответствующий путь/URL в производном псевдониме. |
| 100 | + |
| 101 | +> Примечание: Метод `get()` не проверяет, относится ли результирующий путь/URL-адрес к существующему файлу или ресурсу. |
| 102 | +
|
| 103 | +Псевдоним root также может содержать символы косой черты `/`. Метод `get()` достаточно интеллектуален, чтобы определить, |
| 104 | +какая часть псевдонима является корневым псевдонимом, и, таким образом, правильно определить путь к соответствующему |
| 105 | +файлу или URL-адрес: |
| 106 | + |
| 107 | +```php |
| 108 | +use \Yiisoft\Aliases\Aliases; |
| 109 | + |
| 110 | +public function actionIndex(Aliases $aliases) |
| 111 | +{ |
| 112 | + $aliases->set('@foo', '/path/to/foo'); |
| 113 | + $aliases->set('@foo/bar', '/path2/bar'); |
| 114 | + |
| 115 | + $aliases->get('@foo/test/file.php'); // /path/to/foo/test/file.php |
| 116 | + $aliases->get('@foo/bar/file.php'); // /path2/bar/file.php |
| 117 | +} |
| 118 | +``` |
| 119 | + |
| 120 | +Если бы `@foo/bar` не был бы определен как корневой псевдоним, то последний оператор отобразил бы |
| 121 | +`/path/to/foo/bar/file.php`. |
| 122 | + |
| 123 | + |
| 124 | +## Предопределенные псевдонимы <span id="predefined-aliases"></span> |
| 125 | + |
| 126 | +[Yii приложение](https://github.com/yiisoft/app) предопределяет набор псевдонимов, чтобы ссылаться на часто используемые |
| 127 | +файловые пути и URL-адреса: |
| 128 | + |
| 129 | +- `@root` - базовая директория для приложения запущенного в текущий момент. |
| 130 | +- `@assets` - публичная директория приложения, где оно публикует ресурсы (assets). |
| 131 | +- `@assetsUrl` - URL базовой директории с опубликованными ресурсами. |
| 132 | +- `@baseUrl` - базовый URL запущенного в текущий момент Web приложения. По умолчанию - `/`. |
| 133 | +- `@npm` - директория пакетов Node JS. |
| 134 | +- `@bower` - директория пакетов Bower. |
| 135 | +- `@vendor` - директория `vendor` Composer'а . |
| 136 | +- `@public` - публично доступная директория приложения, которая содержит `index.php`. |
| 137 | +- `@runtime` - путь времени выполнения текущего запущенного приложения. По умолчанию - `@root/runtime`. |
| 138 | +- `@layout` - директория с макетами. |
| 139 | +- `@resources` - директория с представлениями, исходниками ресурсов (asset) и другими ресурсами. |
| 140 | +- `@views` - базовая директория шаблонов представлений приложения. |
0 commit comments