Aliases in Yii 2
Aliases in Yii 2

Aliases

Aliases are used to represent file paths or URLs so that you don't have to hard-code absolute paths or URLs in your project. An alias must start with the @ character to be differentiated from normal file paths and URLs. Alias defined without leading @ will be prefixed with @ character.

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Yii has many pre-defined aliases already available. For example, the alias @yii represents the installation path of the Yii framework; @web represents the base URL for the currently running Web application.

Defining Aliases

You can define an alias for a file path or URL by calling [[Yii::setAlias()]]:

// an alias of a file path
Yii::setAlias('@foo', '/path/to/foo');

// an alias of a URL
Yii::setAlias('@bar', 'http://www.example.com');

// an alias of a concrete file that contains a \foo\Bar class
Yii::setAlias('@foo/Bar.php', '/definitely/not/foo/Bar.php');

Note: The file path or URL being aliased may not necessarily refer to an existing file or resource.

Given a defined alias, you may derive a new alias (without the need of calling [[Yii::setAlias()]]) by appending a slash / followed with one or more path segments. The aliases defined via [[Yii::setAlias()]] becomes the root alias, while aliases derived from it are derived aliases. For example, @foo is a root alias, while @foo/bar/file.php is a derived alias.

You can define an alias using another alias (either root or derived):

Yii::setAlias('@foobar', '@foo/bar');

Root aliases are usually defined during the bootstrapping stage. For example, you may call [[Yii::setAlias()]] in the entry script. For convenience, Application provides a writable property named aliases that you can configure in the application configuration:

return [
    // ...
    'aliases' => [
        '@foo' => '/path/to/foo',
        '@bar' => 'http://www.example.com',
    ],
];

Resolving Aliases

You can call [[Yii::getAlias()]] to resolve a root alias into the file path or URL it represents. The same method can also resolve a derived alias into the corresponding file path or URL:

echo Yii::getAlias('@foo');               // displays: /path/to/foo
echo Yii::getAlias('@bar');               // displays: http://www.example.com
echo Yii::getAlias('@foo/bar/file.php');  // displays: /path/to/foo/bar/file.php

The path/URL represented by a derived alias is determined by replacing the root alias part with its corresponding path/URL in the derived alias.

Note: The [[Yii::getAlias()]] method does not check whether the resulting path/URL refers to an existing file or resource.

A root alias may also contain slash / characters. The [[Yii::getAlias()]] method is intelligent enough to tell which part of an alias is a root alias and thus correctly determines the corresponding file path or URL:

Yii::setAlias('@foo', '/path/to/foo');
Yii::setAlias('@foo/bar', '/path2/bar');
Yii::getAlias('@foo/test/file.php');  // displays: /path/to/foo/test/file.php
Yii::getAlias('@foo/bar/file.php');   // displays: /path2/bar/file.php

If @foo/bar is not defined as a root alias, the last statement would display /path/to/foo/bar/file.php.

Using Aliases

Aliases are recognized in many places in Yii without needing to call [[Yii::getAlias()]] to convert them into paths or URLs. For example, [[yii\caching\FileCache::cachePath]] can accept both a file path and an alias representing a file path, thanks to the @ prefix which allows it to differentiate a file path from an alias.

use yii\caching\FileCache;

$cache = new FileCache([
    'cachePath' => '@runtime/cache',
]);

Please pay attention to the API documentation to see if a property or method parameter supports aliases.

Predefined Aliases

Yii predefines a set of aliases to easily reference commonly used file paths and URLs:

  • @yii, the directory where the BaseYii.php file is located (also called the framework directory).
  • @app, the [[yii\base\Application::basePath|base path]] of the currently running application.
  • @runtime, the [[yii\base\Application::runtimePath|runtime path]] of the currently running application. Defaults to @app/runtime.
  • @webroot, the Web root directory of the currently running Web application. It is determined based on the directory containing the entry script.
  • @web, the base URL of the currently running Web application. It has the same value as [[yii\web\Request::baseUrl]].
  • @vendor, the [[yii\base\Application::vendorPath|Composer vendor directory]]. Defaults to @app/vendor.
  • @bower, the root directory that contains bower packages. Defaults to @vendor/bower.
  • @npm, the root directory that contains npm packages. Defaults to @vendor/npm.

The @yii alias is defined when you include the Yii.php file in your entry script. The rest of the aliases are defined in the application constructor when applying the application configuration.

Note: @web and @webroot aliases as their descriptions indicate are defined within [[yii\web\Application|Web application]] and therefore are not available for [[yii\console\Application|Console application]] by default.

Extension Aliases

An alias is automatically defined for each extension that is installed via Composer. Each alias is named after the root namespace of the extension as declared in its composer.json file, and each alias represents the root directory of the package. For example, if you install the yiisoft/yii2-jui extension, you will automatically have the alias @yii/jui defined during the bootstrapping stage, equivalent to:

Yii::setAlias('@yii/jui', 'VendorPath/yiisoft/yii2-jui');

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! MoonВase — A Hot Start on the Internet
Старт! MoonВase — A Hot Start on the Internet
Старт! Menu