Files
yii/docs/guide/ja/basics.namespace.txt
2009-04-05 21:36:33 +00:00

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>