Yii - 别名
别名可帮助您避免在项目中硬编码绝对路径或 URL。别名以 @ 字符开头。
要定义别名,您应该调用 Yii::setAlias() 方法 −
// 文件路径的别名 Yii::setAlias('@alias', '/path/to/alias'); // URL 的别名 Yii::setAlias('@urlAlias', 'http://www.google.com');
您还可以从现有别名派生出新别名 −
Yii::setAlias('@pathToSomewhere', '@alias/path/to/somewhere');
您可以在入口脚本中或在应用程序配置中名为 aliases 的可写属性中调用 Yii::setAlias() 方法 −
$config = [ 'id' => 'basic', 'basePath' => dirname(__DIR__), 'bootstrap' => ['log'], 'components' => [ 'aliases' => [ '@alias' => '/path/to/somewhere', '@urlAlias' => 'http://www.google.com', ], //other components... ] ]
要解析别名,您应该调用 Yii::getAlias() 方法。
Yii 预定义了以下别名 −
@app − 应用程序的基本路径。
@yii − BaseYii.php 文件所在的文件夹。
@webroot − 应用程序的 Web 根目录。
@web − 应用程序的基本 URL。
@runtime − 应用程序的运行时路径。默认为 @app/runtime。
@vendor − Composer 供应商目录。默认为 @app/vendor。
@npm − npm 包的根目录。默认为 @vendor/npm。
@bower − bower 包的根目录。默认为 @vendor/bower。
现在,向 SiteController 添加一个名为 actionAliases() 的新函数−
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。
输入 http://localhost:8080/index.php?r=site/aliases,您将看到以下输出 −