ホームページ  >  記事  >  バックエンド開発  >  セクション 11 - オーバーロード - PHP5[11]_PHP チュートリアルのクラスとオブジェクト

セクション 11 - オーバーロード - PHP5[11]_PHP チュートリアルのクラスとオブジェクト

WBOY
WBOYオリジナル
2016-07-13 16:57:51827ブラウズ

| = この記事は Haohappy で読まれています<>
| = 翻訳 + 個人的な経験
| =ありがとうございます
| = 批判や修正を歓迎します。PHP 愛好家の皆様と一緒に進歩していきたいと願っています
+--------------------------- -------------------------------------------------- -- +
*/
セクション 11 -- オーバーロード
PHP4 には、Java や COM と同様に、外部オブジェクト モデルへのマッピングを確立するためのオーバーロード構文がすでにあり、これによりプログラマはプロパティやプロパティにアクセスするためのカスタム動作を構築できます。
オーバーロードは、いくつかの特別なメソッド __get、__set、__call を通じて実行できます。Zend エンジンがメンバーにアクセスしようとして見つからない場合、PHP はこれらのメソッドを呼び出します。例 6.14 では、__get と __set がすべてのアクセスを置き換えます。必要に応じて、任意のタイプのフィルタリングを実装できます。たとえば、スクリプトでは、特定の接頭辞で始まる属性値の設定や、特定のタイプの値を含む属性値の呼び出し方法を記述できます。未定義のメソッドを呼び出すと、メソッド名とメソッドによって受け取られたパラメータが __call メソッドに渡され、PHP は __call の値を未定義のメソッドに渡します。
リスト 6.14 ユーザーレベルのオーバーロード
< ;?php
クラス オーバーローダー
{
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("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("レオン", "ジーブ")





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

www.bkjia.com

tru​​e

技術記事 | = この記事は Haohappy のコア PHP プログラミングを読むためのものです | = 章のクラスとオブジェクトのメモ = 不必要なトラブルを避けるために転載しないでください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。