ホームページ > php教程 > php手册 > セクション 11 オーバーロード [11]

セクション 11 オーバーロード [11]

WBOY
リリース: 2016-06-13 12:44:42
オリジナル
964 人が閲覧しました


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

オーバーロードを実行できます。 Zend エンジンがメンバーにアクセスしようとして見つからない場合、PHP はこれらのメソッドを呼び出します。

例 6.14 では、__get と __set が属性へのすべてのアクセスを置き換えます。必要に応じて、スクリプトで属性値の設定を無効にしたり、特定のタイプの値を含めたりすることができます。未定義のメソッドを呼び出す方法について説明します。未定義のメソッドを呼び出すと、メソッド名とそのメソッドが受け取ったパラメータが __call メソッドに渡され、PHP は返された __call 値を未定義のメソッドに渡します。

リスト 6.14 ユーザーレベルのオーバーロード
クラス オーバーローダー
{
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("引数: "); print_r($args);

return(TRUE);
}
}
$o = new Overloader()

// __set() を呼び出します。存在しない属性変数に値を割り当てるには、 activate __set()
$o->dynaProp = "Dynamic Content"

//invoke __get() activate __get()
; print($ o->dynaProp . "
n");

//__call() を起動する
$o->dynaMethod("Leon", "Zeev) ") ;
?>

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート