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' => 'https://www.tw511.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)