0 フォロワー

エイリアス

エイリアスは、プロジェクト内で絶対パスやURLをハードコードする必要がないように、ファイルパスやURLを表すために使用されます。エイリアスは、通常のファイルパスやURLと区別するために、@文字で始まる必要があります。@文字を先頭に付けずに定義されたエイリアスには、@文字が接頭辞として付加されます。

Yiiには、既に多くのプリ定義エイリアスが用意されています。たとえば、エイリアス@yiiはYiiフレームワークのインストールパスを表し、@webは現在実行中のWebアプリケーションのベースURLを表します。

エイリアスの定義

Yii::setAlias() を呼び出すことで、ファイルパスまたはURLのエイリアスを定義できます。

// an alias of a file path
Yii::setAlias('@foo', '/path/to/foo');

// an alias of a URL
Yii::setAlias('@bar', 'https://www.example.com');

// an alias of a concrete file that contains a \foo\Bar class
Yii::setAlias('@foo/Bar.php', '/definitely/not/foo/Bar.php');

注記:エイリアスの対象となるファイルパスまたはURLは、必ずしも既存のファイルまたはリソースを参照するとは限りません。

定義済みのエイリアスを基に、Yii::setAlias() を呼び出すことなく、新しいエイリアスを派生させることができます。スラッシュ/に続いて1つ以上のパスセグメントを追加します。Yii::setAlias() で定義されたエイリアスはルートエイリアスになり、そこから派生したエイリアスは派生エイリアスになります。たとえば、@fooはルートエイリアスであり、@foo/bar/file.phpは派生エイリアスです。

別のエイリアス(ルートまたは派生)を使用してエイリアスを定義できます。

Yii::setAlias('@foobar', '@foo/bar');

ルートエイリアスは通常、ブートストラップ段階で定義されます。たとえば、エントリスクリプトYii::setAlias() を呼び出すことができます。便宜上、アプリケーションは、アプリケーション設定で設定できる、aliasesという書き込み可能なプロパティを提供します。

return [
    // ...
    'aliases' => [
        '@foo' => '/path/to/foo',
        '@bar' => 'https://www.example.com',
    ],
];

エイリアスの解決

Yii::getAlias() を呼び出すと、ルートエイリアスをそれが表すファイルパスまたはURLに解決できます。同じメソッドは、派生エイリアスを対応するファイルパスまたはURLに解決することもできます。

echo Yii::getAlias('@foo');               // displays: /path/to/foo
echo Yii::getAlias('@bar');               // displays: https://www.example.com
echo Yii::getAlias('@foo/bar/file.php');  // displays: /path/to/foo/bar/file.php

派生エイリアスによって表されるパス/URLは、ルートエイリアスパートを派生エイリアス内の対応するパス/URLで置き換えることで決定されます。

注記:Yii::getAlias() メソッドは、結果のパス/URLが既存のファイルまたはリソースを参照しているかどうかをチェックしません。

ルートエイリアスには、スラッシュ/文字を含めることもできます。Yii::getAlias() メソッドは、エイリアスのどの部分がルートエイリアスであるかを十分に理解しており、対応するファイルパスまたはURLを正しく決定します。

Yii::setAlias('@foo', '/path/to/foo');
Yii::setAlias('@foo/bar', '/path2/bar');
Yii::getAlias('@foo/test/file.php');  // displays: /path/to/foo/test/file.php
Yii::getAlias('@foo/bar/file.php');   // displays: /path2/bar/file.php

@foo/barがルートエイリアスとして定義されていない場合、最後のステートメントは/path/to/foo/bar/file.phpを表示します。

エイリアスの使用

Yiiでは、多くの場所でYii::getAlias()を呼び出してパスまたはURLに変換する必要なく、エイリアスが認識されます。例えば、yii\caching\FileCache::$cachePathは、ファイルパスとファイルパスを表すエイリアスの両方を、ファイルパスとエイリアスを区別する@プレフィックスのおかげで受け入れることができます。

use yii\caching\FileCache;

$cache = new FileCache([
    'cachePath' => '@runtime/cache',
]);

プロパティまたはメソッドパラメータがエイリアスをサポートしているかどうかを確認するには、APIドキュメントに注意してください。

定義済みのエイリアス

Yiiは、一般的に使用されるファイルパスとURLを簡単に参照するためのエイリアスのセットを事前に定義しています。

  • @yiiBaseYii.phpファイルが存在するディレクトリ(フレームワークディレクトリとも呼ばれます)。
  • @app、現在実行中のアプリケーションのベースパス
  • @runtime、現在実行中のアプリケーションのランタイムパス。デフォルトは@app/runtime
  • @webroot、現在実行中のWebアプリケーションのWebルートディレクトリ。エントリスクリプトを含むディレクトリに基づいて決定されます。
  • @web、現在実行中のWebアプリケーションのベースURL。yii\web\Request::$baseUrlと同じ値を持ちます。
  • @vendorComposerベンダーディレクトリ。デフォルトは@app/vendor
  • @bowerbowerパッケージを含むルートディレクトリ。デフォルトは@vendor/bower
  • @npmnpmパッケージを含むルートディレクトリ。デフォルトは@vendor/npm

@yiiエイリアスは、エントリスクリプトYii.phpファイルを含めたときに定義されます。残りのエイリアスは、アプリケーションの構成を適用する際に、アプリケーションコンストラクタで定義されます。

注記: @web@webrootエイリアスは、その説明が示すようにWebアプリケーション内で定義されており、そのため、デフォルトではコンソールアプリケーションでは使用できません。

拡張機能エイリアス

Composerを介してインストールされた各拡張機能に対して、エイリアスが自動的に定義されます。各エイリアスは、そのcomposer.jsonファイルで宣言されている拡張機能のルート名前空間の名前に基づいて命名され、各エイリアスはパッケージのルートディレクトリを表します。例えば、yiisoft/yii2-jui拡張機能をインストールすると、ブートストラップ段階で@yii/juiエイリアスが自動的に定義され、これは次と同等です。

Yii::setAlias('@yii/jui', 'VendorPath/yiisoft/yii2-jui');

タイプミスを見つけた場合、またはこのページの改善が必要だと考える場合は、
GitHubで編集してください。 !