PHP开发教程

Yii别名(Aliases)

别名帮助你不要在项目硬编码绝对路径或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.yiibai.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。

打开 http://localhost:8080/index.php?r=site/aliases, 会看到下面的输出 -

11.png

Powered by PHP二次开发 ©2008-2017