mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-11 18:46:59 +01:00
78 lines
4.4 KiB
Plaintext
78 lines
4.4 KiB
Plaintext
パスエイリアスと名前空間
|
|
========================
|
|
|
|
Yiiは広範囲に渡るパスエイリアスを使用します。パスエイリアスは、特定の
|
|
ディレクトリ、またはファイルパスと結びつけられます。これは、広範囲に
|
|
採用されている名前空間のフォーマットに似たドットシンタックスによって
|
|
表されます:
|
|
|
|
~~~
|
|
RootAlias.path.to.target
|
|
~~~
|
|
|
|
`RootAlias`の部分は現存するディレクトリへのエイリアスです。
|
|
[YiiBase::setPathOfAlias()]を呼出すことにより、新たにパスエイリアスを定義することができます。
|
|
便宜上、Yiiは以下のルートエイリアスをあらかじめ定義しています。
|
|
|
|
- `system`: Yiiフレームワークのディレクトリを参照します。
|
|
- `application`: アプリケーションの[base directory](/doc/guide/basics.application#application-base-directory)を参照します。
|
|
- `webroot`: [entry script](/doc/guide/basics.entry)ファイルを含むディレクトリを参照します。
|
|
このエイリアスは1.0.3版から使用可能です。
|
|
|
|
さらに、もしアプリケーションが[modules](/doc/guide/basics.module)を使用している場合は、
|
|
ルートエイリアスはあらかじめそれぞれのモジュールIDを定義し、対応するモジュールのベースパスを参照します。
|
|
この機能は1.0.3版から使用可能です。
|
|
|
|
[YiiBase::getPathOfAlias()]を使用する事によって、エイリアスを対応するパスへ
|
|
変換することができます。例えば、`system.web.CController` は
|
|
`yii/framework/web/CController` の様に変換されます。
|
|
|
|
エイリアスを使用する事によって、クラスの定義をインポートする事が
|
|
大変便利になります。例えば、[CController]の定義をインクルードしたい時、
|
|
下記の様にコールする事が出来ます:
|
|
|
|
~~~
|
|
[php]
|
|
Yii::import('system.web.CController');
|
|
~~~
|
|
|
|
[import|YiiBase::import] メソッドはより効率的という点で `include` や
|
|
`require` とは違います。インポートされるクラスの定義は、厳密には、
|
|
それが始めて参照されるときまでインクルードされません。同じ名前空間が
|
|
何度もインポートされる場合においても、`include_onde` や `require_once`
|
|
よりも断然早いのです。
|
|
|
|
> Tip|ヒント: Yiiフレームワークで定義されたクラスを参照する場合、
|
|
インポートやインクルードを行う必要はありません。Yiiの全てのコアクラスは、
|
|
あらかじめインポートされています。
|
|
|
|
下記のシンタックスによって、ディレクトリ配下のクラスファイルが、必要な時に
|
|
自動的にインクルードされるように、ディレクトリ全体をインポート
|
|
する事が出来ます。
|
|
|
|
~~~
|
|
[php]
|
|
Yii::import('system.web.*');
|
|
~~~
|
|
|
|
[import|YiiBase::import]の他にも、エイリアスはクラスを参照する為に、
|
|
様々な箇所で使用されます。例えば、もしクラスファイルが予めインクルード
|
|
されていない場合でも、クラスに結びついたインスタンスを作成する為に、
|
|
エイリアスを[Yii::createComponent()] に渡すことが出来ます。
|
|
|
|
名前空間とパスエイリアスで混乱しないで下さい。パスエイリアスは
|
|
クラスファイルかディレクトリの参照に使用され、名前空間は、
|
|
クラス名の論理的なグループを参照する事によって、たとえクラス名が同じでも、
|
|
他の名前空間のものとは別に識別する為のものです。
|
|
|
|
> Tip|ヒント: PHP 5.3.0よりも以前のバージョンでは名前空間のサポートが
|
|
本質的に無いので、同じ名前のクラスのインスタンスを作成することが
|
|
出来ない為、異なる定義を行う必要があります。この理由によって、
|
|
全てのYiiフレームワークのクラスは、前置詞として'C'('class'を意味します)
|
|
を付随させていて、この事によって、ユーザーが定義したクラスと識別が
|
|
出来るようになっています。前置詞'C'はYiiフレームワークの使用の為に
|
|
リザーブしておき、ユーザー定義によるクラスの前置詞には別の文字列を
|
|
使用して下さい。
|
|
|
|
<div class="revision">$Id: basics.namespace.txt 766 2008-11-06 19:43:44Z qiang.xue $</div>
|