| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
クラスのオートローディングオブジェクト指向アプリケーションを作成する開発者の多くは、 クラス定義毎に一つのPHPソースファイルを作成します。 最大の問題は、各スクリプトの先頭に、必要な読み込みを行う長いリストを 記述する必要があることです(各クラスについて一つ)。 PHP 5では、これはもう不要です。 spl_autoload_register() 関数で任意の数のオートローダーを登録できて、 クラスやインターフェイスが定義されていなくても自動的に読み込めるようになります。 オートローダーを登録すれば、PHPがエラーで止まる前にクラスをロードする最後の チャンスが与えられます。 ヒント
__autoload() 関数でもクラスやインターフェイスのオートロードができますが、 spl_autoload_register() 関数を使うことをおすすめします。 こちらのほうが、より柔軟に使えるからです (任意の数のオートローダーを登録して、サードパーティのライブラリなどに対応することもできます)。 __autoload() を使うことはおすすめできません。 将来のバージョンではこの機能が非推奨となり、削除されるかもしれません。
例1 オートロードの例 この例は、 クラス MyClass1 および MyClass2 をそれぞれ MyClass1.php および MyClass2.php からロードします。
<?php 例2 オートロードの別の例 この例は、インターフェイス ITest をロードしようとします。
<?php 例3 5.3.0 以降での例外処理つきのオートロード この例は、例外をスローして try/catch ブロックの動きを示します。
<?php 上の例の出力は以下となります。 Want to load NonLoadableClass. Unable to load NonLoadableClass. 例4 5.3.0 以降での例外処理つきのオートロード - 独自の例外が見つからない場合 この例では、ロードできない独自の例外クラスをスローします。
<?php 上の例の出力は以下となります。 Want to load NonLoadableClass. Want to load MissingException. Fatal error: Class 'MissingException' not found in testMissingException.php on line 4 |
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「クラスのオートローディング」をGoogle検索
|