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, 會看到下面的輸出 -
Yii別名(Aliases)