8. Aliases

Yii offers a shorthand of sorts to refer to file paths and URLs so that you do not have to hard-code these into your application. They are basically defined constants and always are prefixed with an @ symbol.

8.1 Commonly Used Predefined Aliases

There are a number of predefined aliases available to you by default. Some of the more commonly used aliases are as follows:

  • @yii: The path to the core Yii application files.
  • @app: A reference to the root path of the application.
  • @web: The base URL pointing to your application.
  • @webroot: The document root directory as specified in your Apache config.

Yii2 Advanced Template defines these additional aliases:

  • @common: Path to the 'common' root directory.
  • @frontend: Path to the 'frontend' root directory.
  • @backend: Path to the 'backend' root directory.
  • @console: Path to the 'console' root directory.

8.2 Defining Aliases

You can define your own aliases by using the setAlias function.

To set an alias of a file path, you would use the following format:

Yii::setAlias('@foo', '/path/to/foo');

You can also set an alias to a URL as such:

Yii::setAlias('@bar', 'http://www.example.com');

You can even use an alias to define another alias:

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

You also have the option to set any aliases in the config file. You could add the following to the $config array:

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

8.3 Resolving Aliases

You get the alias value by using Yii::getAlias(). If @foo and @bar where set as above, you would access them as such:

$foo = Yii::getAlias('@foo');
$bar = Yii::getAlias('@foo');

If you echoed these out, you would get the following:

echo $foo;

Displays /path/to/foo

echo $bar;

Displays http://www.example.com

You can also append additional path directors.

echo Yii::getAlias('@foo/bar/file.php');

Displays /path/to/foo/bar/file.php

8.4 Using Aliases

Aliases are recognized in many places in Yii without needing to call Yii::getAlias() to convert them into paths or URLs. Sometimes the @alias is used as part of the path.

For example, setting the path to the file cache, you would do as such:

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