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://:8080/index.php?r=site/aliases,您將看到以下輸出 -

Set Aliases
廣告

© . All rights reserved.