Yii2框架中别名(Aliases)学习使用教程

2019-10-02 作者:网络时代   |   浏览(197)

别名用来表示文件路径和 URL,这样就避免了将一些文件路径、URL以硬编码的方式写入代码中,或者多处出现一长串的文件路径、URL。

在之前自动加载机制的文章中,我们有提到别名,提到 getAlias 方法,大家当时可能不太清楚,这到底是什么,今天我们就来说一下别名。

在 Yii2 中,一个别名必须以 @ 字符开头,Yii2 预定义了大量可用的别名,预定义的别名如下:

别名用来表示文件路径和 URL,这样就避免了将一些文件路径、URL以硬编码的方式写入代码中,或者多处出现一长串的文件路径、URL。

    @yii 表示Yii框架所在的目录,也是 BaseYii.php 文件所在的位置
    @app 表示正在运行的应用的根目录
    @vendor 表示Composer 第三方库所在目录,一般是 @app/vendor 或 @app/../vendor
    @bower 表示 Bower 第三方库所在目录,一般是 @vendor/bower
    @npm 表示 NPM 第三方库所在目录,一般是 @vendor/npm
    @runtime 表示正在运行的应用的运行时用于存放运行时文件的目录,一般是 @app/runtime
    @webroot 表示正在运行的应用的入口文件 index.php 所在的目录,一般是 @app/web
    @web URL别名,表示当前应用的根URL,主要用于前端
    @common 表示通用文件夹
    @frontend 表示前台应用所在的文件夹
    @backend 表示后台应用所在的文件夹
    @console 表示命令行应用所在的文件夹
    其他使用Composer安装的Yii扩展注册的二级别名

在 Yii2 中,一个别名必须以 @ 字符开头,Yii2 预定义了大量可用的别名,预定义的别名如下:

其中的 @common @frontend @backend 和 @console 在 baisc 的项目中是不会存在的。在 advanced 的项目中通常是定义在 commonconfigbootstrap.php 文件中,其内容如下:

  • @yii 表示Yii框架所在的目录,也是 BaseYii.php 文件所在的位置
  • @app 表示正在运行的应用的根目录
  • @vendor 表示Composer 第三方库所在目录,一般是 @app/vendor 或 @app/../vendor
  • @bower 表示 Bower 第三方库所在目录,一般是 @vendor/bower
  • @npm 表示 NPM 第三方库所在目录,一般是 @vendor/npm
  • @runtime 表示正在运行的应用的运行时用于存放运行时文件的目录,一般是 @app/runtime
  • @webroot 表示正在运行的应用的入口文件 index.php 所在的目录,一般是 @app/web
  • @web URL别名,表示当前应用的根URL,主要用于前端
  • @common 表示通用文件夹
  • @frontend 表示前台应用所在的文件夹
  • @backend 表示后台应用所在的文件夹
  • @console 表示命令行应用所在的文件夹
  • 其他使用Composer安装的Yii扩展注册的二级别名
<?php
Yii::setAlias('common', dirname(__DIR__));
Yii::setAlias('frontend', dirname(dirname(__DIR__)) . '/frontend');
Yii::setAlias('backend', dirname(dirname(__DIR__)) . '/backend');
Yii::setAlias('console', dirname(dirname(__DIR__)) . '/console');

其中的 @common @frontend @backend 和 @console 在 baisc 的项目中是不会存在的。在 advanced 的项目中通常是定义在 commonconfigbootstrap.php 文件中,其内容如下:

Yii2 中关于别名的设置和获取的方法都放在 BaseYii 类中,其结构基本如下:

<?php
Yii::setAlias('common', dirname(__DIR__));
Yii::setAlias('frontend', dirname(dirname(__DIR__)) . '/frontend');
Yii::setAlias('backend', dirname(dirname(__DIR__)) . '/backend');
Yii::setAlias('console', dirname(dirname(__DIR__)) . '/console');
<?php
class BaseYii
{
    /**
     * @var array registered path aliases
     * @see getAlias()
     * @see setAlias()
     * Yii 的路径别名的 Map, 默认 @yii 指向当前目录
     */
    public static $aliases = ['@yii' => __DIR__];
    /**
     * Translates a path alias into an actual path.
     * 将别名转化为真实的路径
     */
    public static function getAlias($alias, $throwException = true)
    {
        ...
    }
    /**
     * Registers a path alias.
     * 用一个真实的路径注册一个别名
     */
    public static function setAlias($alias, $path)
    {
        ...
    }
}

Yii2 中关于别名的设置和获取的方法都放在 BaseYii 类中,其结构基本如下:

这是简化之后的 BaseYii 类的结构,其中有一个重要的变量 $aliases,两个重要的方法 getAlias 和 setAlias。$aliases 是存储 Yii2 路径别名的一个数组,key 是别名,value 是真实路径。getAlias 方法是根据别名获取到真实的地址,setAlias 是用一个真实的地址去注册一个别名。

<?php
class BaseYii
{
    /**
     * @var array registered path aliases
     * @see getAlias()
     * @see setAlias()
     * Yii 的路径别名的 Map, 默认 @yii 指向当前目录
     */
    public static $aliases = ['@yii' => __DIR__];

    /**
     * Translates a path alias into an actual path.
     * 将别名转化为真实的路径
     */
    public static function getAlias($alias, $throwException = true)
    {
        ...
    }

    /**
     * Registers a path alias.
     * 用一个真实的路径注册一个别名
     */
    public static function setAlias($alias, $path)
    {
        ...
    }
}

先来看下 setAlias 方法,其内容如下:

这是简化之后的 BaseYii 类的结构,其中有一个重要的变量 $aliases,两个重要的方法 getAlias 和 setAlias。$aliases 是存储 Yii2 路径别名的一个数组,key 是别名,value 是真实路径。getAlias 方法是根据别名获取到真实的地址,setAlias 是用一个真实的地址去注册一个别名。

 

先来看下 setAlias 方法,其内容如下:

本文由澳门新葡亰网址大全发布于网络时代,转载请注明出处:Yii2框架中别名(Aliases)学习使用教程

关键词: