この拡張モジュールの用途は、オブジェクトのプロパティへのアクセスと メソッドのコールのオーバーロードを可能にすることです。この拡張モ ジュールで定義されている関数は1つだけです。この関数、 overload() はこの機能を有効にするクラスの名前を 引数とします。名前を指定されたクラスでこの機能を使用したい場合は以 下の適当なメソッドを定義する必要があります。これらは、 __get(), __set(), __call() で、それぞれ、プロパティを取得、設定、 メソッドをコールするためのものです。オーバーロード機能は選択可能で す。これらのハンドラ関数の中でオーバーロードは無効とすることができ、 この場合、オブジェクトのプロパティに普通にアクセスできます。
このモジュールは、 実験的 なものです。これは、これらの関数の動作、関数名は、このドキュメントに書かれて事項と同様に告知なく将来的なPHPのリリースで変更される可能性があります。注意を喚起するとともに、このモジュールは使用者のリスクで使用して下さい。
これらの関数は、標準モジュールの一部と して利用可能であり、常に使用できます。
以下の関数を使用するには、オプション --enable-overload を指定してPHPをコ ンパイル必要があります。この拡張モジュールは、 PHP 4.3.0ではデフォルトで有効になっています。 --disable--overload により オーバーロードのサポートを無効とすることができます。
Windows版の PHP にはこの拡張モジュールのサポートが組み込まれています。これらの関数を使用するために拡張モジュールを追加でロードする必要はありません。
注意 オーバーロードの組み込みサポートはPHP 4.3.0で利用可能となりました。
この拡張モジュールは設定ディレクティブを全く 定義しません。
この拡張モジュールはリソース型を全く定義し ません。
この拡張モジュールは定数を全く定義しませ ん。
overload() 関数の簡単な使用例をいくつか示します。
例 1PHPクラスのオーバーロード
この拡張モジュールは実験的なステータスにあり、全ての機能が動作す るわけではありません。現在、 __call() はサポート されておらず、プロパティの取得または設定操作のオーバーロードだけ が可能です。クラスの元のオーバーロードハンドラを削除することはで きません。また、 __set() はプロパティの一段階に アクセス場合にのみ動作します。