ホームページ >バックエンド開発 >PHPチュートリアル >PHP5.0 オブジェクト モデルの探索オーバーロード_PHP チュートリアル

PHP5.0 オブジェクト モデルの探索オーバーロード_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:21:32717ブラウズ

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

tru​​e

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

技術記事

Java や COM と同じように、PHP4 には外部オブジェクト モデルへのマッピングを確立するためのオーバーロード構文がすでにあり、PHP5 は強力なオブジェクト指向オーバーロードを提供し、プログラマがカスタム動作を作成できるようにします。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。