エイリアスは、プロジェクト内で絶対パスや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を簡単に参照するためのエイリアスのセットを事前に定義しています。
@yii
、BaseYii.php
ファイルが存在するディレクトリ(フレームワークディレクトリとも呼ばれます)。@app
、現在実行中のアプリケーションのベースパス。@runtime
、現在実行中のアプリケーションのランタイムパス。デフォルトは@app/runtime
。@webroot
、現在実行中のWebアプリケーションのWebルートディレクトリ。エントリスクリプトを含むディレクトリに基づいて決定されます。@web
、現在実行中のWebアプリケーションのベースURL。yii\web\Request::$baseUrlと同じ値を持ちます。@vendor
、Composerベンダーディレクトリ。デフォルトは@app/vendor
。@bower
、bowerパッケージを含むルートディレクトリ。デフォルトは@vendor/bower
。@npm
、npmパッケージを含むルートディレクトリ。デフォルトは@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で編集してください。 !
コメントするにはサインアップまたはログインしてください。