Alias
设置别名的目的:特殊的变量常量
yii\BaseYii::$aliases
保存整个Yii应用的所有别名。
在yii\base\Application
的构造函数__construct()
中调用preInit
方法,该方法预定义了5个别名:
@app , @vendor @bower @npm , @runtime
在Web应用,yii\base\Web\Application
中又定义了2个别名:
@webroot @web
最后一个藏有别名的地方:
@verdor/yiisoft/extensions.php
这一部分的别名会在yii\base\Application::bootstrap()
中注册完成。
定义与解析别名
Yii::$aliases[]
来保存别名
Yii::setAlias('@alias', 'path')
来定义别名。
这个定义的本质是:BaseYii::setAlias()
Yii::getAlias()
来调用别名。
别名的解析过程
先按根别名找到可能保存别名的分支。
遍历这个分支下的所有树叶,优先匹配长别名。
将找到的最长匹配别名替换成其所对应的值,再接上 @alias 的后半截,成为新的别名。
Summary
别名需在使用前定义,因此通常来讲,定义别名应当在放在应用的初始化阶段。
别名必然以 @ 打头。
别名的定义可以使用之前已经定义过的别名。
别名在储存时,至多只分成两级,第一级的键是根别名。 第二级别名的键是完整的别名,而不是去除根别名后剩下的所谓的“二级”别名。
Yii通过分层的树结构来保存别名最主要是为高效检索作准备。
很多地方可以直接使用别名,而不用调用 Yii::getAlias() 转换成真实的路径或URL。
别名解析时,优先匹配较长的别名。
Yii预定义了许多常用的别名供编程时使用。
使用别名时,要将别名放在最前面,不能放在中间。
参考
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。