Yii2的深入学习–别名(Aliases)
在之前自动加载机制的文章中,我们有提到别名,提到 getAlias 方法,大家当时可能不太清楚,这到底是什么,今天我们就来说一下别名。
别名用来表示文件路径和 URL,这样就避免了将一些文件路径、URL以硬编码的方式写入代码中,或者多处出现一长串的文件路径、URL。
在 Yii2 中,一个别名必须以 @
字符开头,Yii2 预定义了大量可用的别名,预定义的别名如下:
- @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扩展注册的二级别名
其中的 @common @frontend @backend 和 @console 在 baisc 的项目中是不会存在的。在 advanced 的项目中通常是定义在 common\config\bootstrap.php 文件中,其内容如下:
<?<span style="color: #000000">phpYii</span>::setAlias('common', <span style="color: #008080">dirname</span><span style="color: #000000">(__DIR__));Yii</span>::setAlias('frontend', <span style="color: #008080">dirname</span>(<span style="color: #008080">dirname</span>(__DIR__)) . '/frontend'<span style="color: #000000">);Yii</span>::setAlias('backend', <span style="color: #008080">dirname</span>(<span style="color: #008080">dirname</span>(__DIR__)) . '/backend'<span style="color: #000000">);Yii</span>::setAlias('console', <span style="color: #008080">dirname</span>(<span style="color: #008080">dirname</span>(__DIR__)) . '/console');
Yii2 中关于别名的设置和获取的方法都放在 BaseYii 类中本#文来源gaodai$ma#com搞$$代**码网$,其结构基本如下:
<?<span style="color: #000000">php</span><span style="color: #0000ff">class</span><span style="color: #000000"> BaseYii{ </span><span style="color: #008000">/*</span><span style="color: #008000">* * @var array registered path aliases * @see getAlias() * @see setAlias() * Yii 的路径别名的 Map, 默认 @yii 指向当前目录 </span><span style="color: #008000">*/</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #800080">$aliases</span> = [[email protected]' =><span style="color: #000000"> __DIR__]; </span><span style="color: #008000">/*</span><span style="color: #008000">* * Translates a path alias into an actual path. * 将别名转化为真实的路径 </span><span style="color: #008000">*/</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">function</span> getAlias(<span style="color: #800080">$alias</span>, <span style="color: #800080">$throwException</span> = <span style="color: #0000ff">true</span><span style="color: #000000">) { </span>...<span style="color: #000000"> } </span><span style="color: #008000">/*</span><span style="color: #008000">* * Registers a path alias. * 用一个真实的路径注册一个别名 </span><span style="color: #008000">*/</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">function</span> setAlias(<span style="color: #800080">$alias</span>, <span style="color: #800080">$path</span><span style="color: #000000">) { </span>...<span style="color: #000000"> }}</span>