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