🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 别名 别名用来表示文件路径和url,目的是避免了在代码中硬编码一些绝对路径和URL,一个别名必须以@开头 # 别名设置 用`Yii::setAlias()`方法来设置.例如 ~~~ //文件路径别名 Yii::setAlias('@foo', '/path/foo'); //URL别名 Yii::setAlias('@bar', 'http://www.example.com'); ~~~ ## 新定义别名还是删除别名 如果传入的`$path`不是`null`,说明是正常的别名定义。 对于正常的别名定义,就是往`BaseYii::$aliases[]`里写入信息。 而如果`$path`为`null`,说明是要删除别名: ~~~ // 定义别名@foo Yii::setAlias('@foo', 'path/to/some/where'); // 删除别名@foo Yii::setAlias('@foo', null); ~~~ **别名的删除** 传入的`$path`为`null`表示要删除别名。 Yii使用PHP的`unset()`注销`BaseYii::$aliases[]`数组中的对应元素, 达到删除别名的目的。注意删除别名后,不需要调用`krsort()`对数组进行处理 # 别名的使用 ~~~ $cache = new FileCache([ 'cachePath' => '@runtime/cache', ]) ~~~ # Advanced模板中已经预定义的别名 ~~~ @yii 框架目录 @app application的路径 一些目录的别名 @webroot web root的目录 ~~~ # 预定义别名 小结一下,默认预定义别名一共有12个,其中路径别名11个,URL别名只有`@web`1个: * `@web`URL别名,表示当前应用的根URL,主要用于前端; * `@yii`表示Yii框架所在的目录,也是`yii\BaseYii`类文件所在的位置; * `@app`表示正在运行的应用的根目录,一般是`<project>/frontend`; * `@vendor`表示Composer第三方库所在目录,一般是`@app/vendor`或`@app/../vendor`; * `@bower`表示Bower第三方库所在目录,一般是`@vendor/bower`; * `@npm`表示NPM第三方库所在目录,一般是`@vendor/npm`; * `@runtime`表示正在运行的应用的运行时用于存放运行时文件的目录,一般是`@app/runtime`; * `@webroot`表示正在运行的应用的入口文件`index.php`所在的目录,一般是`@app/web`; * `@common`表示通用文件夹; * `@frontend`表示前台应用所在的文件夹; * `@backend`表示后台应用所在的文件夹; * `@console`表示命令行应用所在的文件夹; * 其他使用Composer安装的Yii扩展注册的二级别名,比如在`extensions.php`中key为`alias`的值