ホームページ >バックエンド開発 >PHPチュートリアル >セクション 11 [11]_PHP チュートリアルのリロード

セクション 11 [11]_PHP チュートリアルのリロード

WBOY
WBOYオリジナル
2016-07-21 16:09:24760ブラウズ


Java や COM と同様に、PHP4 には外部オブジェクト モデルへのマッピングを確立するためのオーバーロード構文が備わっており、PHP5 は強力なオブジェクト指向オーバーロードを提供し、プログラマーがプロパティにアクセスしてメソッドを呼び出すためのカスタム動作を作成できるようにします。

オーバーロードは、いくつかの特別なメソッドを通じて実行できます。 __get、__set、__call。Zend エンジンがメンバーにアクセスしようとして見つからない場合、PHP はこれらのメソッドを呼び出します。例 6.14 では、必要に応じて、__get と _ _set が属性変数配列へのすべてのアクセスを置き換えます。たとえば、スクリプトは属性値の設定を無効にしたり、特定の接頭辞で開始したり、特定の種類の値を含めたりすることができます。未定義メソッドの場合、メソッド名とメソッドによって受け取られたパラメーターは __call メソッドに渡され、PHP は __call の値を未定義メソッドに返します

リスト 6.14 ユーザーレベルのオーバーロード
class オーバーローダー
{
private $properties = array();

function __get($property_name)
{
if(isset($this->properties[$property_name]))
{
return( $this->properties[$property_name]);
}
else
return(NULL);
}
}

function __set($property_name, $value)
{
$this->properties[$ property_name] = $value;

function __call($function_name, $args)
print("$function_name()
n の呼び出し");
print("引数: "); $args);

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/314506.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/314506.html

Java や COM と同じように、PHP4 には外部オブジェクト モデルへのマッピングを確立するためのオーバーロード構文がすでにあり、PHP5 は強力なオブジェクト指向オーバーロードを提供し、プログラマーがカスタム動作を作成できるようにします。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。