Yii - 别名



别名可以帮助您避免在项目中硬编码绝对路径或 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');

您可以在入口脚本或应用程序配置中名为 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。

输入 https://127.0.0.1:8080/index.php?r=site/aliases,您将看到以下输出 -

Set Aliases
广告