PHP4 には、Java や COM と同様に、外部オブジェクト モデルへのマッピングを確立するためのオーバーロード構文がすでにあり、PHP5 は強力なオブジェクト指向オーバーロードを提供し、プログラマがプロパティにアクセスしてメソッドを呼び出すためのカスタム動作を作成できるようにします。
オーバーロードは、いくつかの特別なメソッド __get、__set、__call を通じて実行できます。Zend エンジンがメンバーにアクセスしようとして見つからない場合、PHP はこれらのメソッドを呼び出します
次の例では、__get と _ _set がすべてを置き換えます。必要に応じて、スクリプトで属性値の設定を無効にしたり、特定の種類の値を含めたりすることができます。未定義のメソッドを呼び出す方法 未定義のメソッドを呼び出すと、メソッド名とそのメソッドが受け取ったパラメータが __call メソッドに渡され、PHP は __call の値を未定義のメソッドに返します
Listing1 User -level。オーバーロード
class オーバーローダー
{
private $properties = array();
function __get($property_name)
{
if(isset($this->properties[$property_name]))
{
return($ this- >プロパティ[$プロパティ名]);
else
{
return(NULL); this->プロパティ[$プロパティ名] = $value;
function __call($function_name, $args)
{
print( "$function_name() n の呼び出し");
print("Arguments: ");
return (TRUE)
}
$o = new Overloader(); invoke __set() 存在しない属性変数に値を代入し、__set() を起動します
$o->dynaProp = "動的コンテンツ"
//invoke __get() activate __get()
print($o-> dynaProp . "n");
//invoke __call() activate __call()
$o->dynaMethod("Leon ", "Zeev");
http://www.bkjia.com/PHPjc/532421.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/532421.html
技術記事
Java や COM と同じように、PHP4 には外部オブジェクト モデルへのマッピングを確立するためのオーバーロード構文がすでにあり、PHP5 は強力なオブジェクト指向オーバーロードを提供し、プログラマがカスタム動作を作成できるようにします。