别名用来表示文件路径和URL,简化引用,避免在代码中编码一些绝对路径和URL。一个别名必须以‘@’字符开头,以区别于传统的文件路径和URL。
定义别名:调用Yii::setAlias()给文件路径或URL定义别名:
// 文件路径的别名
Yii::setAlias('@foo', '/path/to/foo');
// URL 的别名
Yii::setAlias('@bar', 'http://www.example.com');
注意:别名所指向的文件路径或 URL 不一定是真实存在的文件或资源。
可以通过在一个别名后面加斜杠 /
和一至多个路径分段生成新别名(无需调用 Yii::setAlias())。我们把通过 Yii::setAlias() 定义的别名称为根别名,而用他们衍生出去的别名成为衍生别名。例如,@foo
就是根别名,而 @foo/bar/file.php
是一个衍生别名。
你还可以用别名去定义新别名(根别名与衍生别名均可):
Yii::setAlias('@foobar', '@foo/bar');
解析别名:调用Yii::getAlias解析别名到对应的文件路径或URL:如
// echo Yii::getAlias('@webroot'); // D:/path/yiibasic/web // echo Yii::getAlias('@app'); // D:\path\yiibasic // echo Yii::getAlias('@web'); // /yiibasic/web
注意:Yii::getAlias() 并不检查结果路径/URL 所指向的资源是否真实存在。
系统定义的路径别名:
-
@yii
-BaseYii.php
文件所在的目录(也被称为框架安装目录) -
@app
- 当前运行的应用程序的基本路径 yii\base\Application::basePath -
@common
- 公共文件目录 -
@frontend
- 前端web应用程序目录 -
@backend
- 后端web应用程序目录 -
@console
- 控制台目录 -
@runtime
- 当前运行的应用的 yii\base\Application::runtimePath -
@vendor
- yii\base\Application::vendorPath -
@webroot
- 当前运行应用的 Web 入口目录 -
@web
- 当前运行应用的根 URL