PHP5.0 以降、PHP にはより多くのオブジェクト指向メソッドが追加され、PHP がより強力になりました。 !
ここでは、PHP のマジック メソッドと呼ばれるいくつかの関数を紹介します。実際、一般的なアプリケーションでは、誰もがこれらを使用する必要があります。 !
1.__construct() オブジェクトをインスタンス化するとき、最初にオブジェクトのこのメソッドが呼び出されます。
Java コード
class Test { function __construct() { echo "前"; } } $t = new Test();
class Test { function __construct() { echo "前" } } $t = new Test( );
出力は次のとおりです:
start
同じクラス名の php5 オブジェクト モデルと関数がクラスのコンストラクターであることがわかっているため、コンストラクターと __construct() メソッドを同時に定義すると、php5 は__construct() 関数を呼び出すのではなく、デフォルトでコンストラクターを呼び出します。そのため、__construct() はクラスのデフォルトのコンストラクターとして機能します
2.__destruct() このメソッドは、オブジェクトが削除されるか、オブジェクトの操作が終了するときに呼び出されます。
Java コード
class Test { function __destruct() { echo "end"; } } $t = new Test(); は end を出力します
class Test { function __destruct() { echo "end" } } $t = new Test(); は end を出力します
オブジェクト操作の最後にリソースを解放するなどの操作を実行できます
3.__get() は、存在しないプロパティを読み取ろうとするときに呼び出されます。
オブジェクトに存在しないプロパティを読み取ろうとすると、PHP はエラー メッセージを表示します。クラスに __get メソッドを追加すると、この関数を使用して Java のリフレクションと同様のさまざまな操作を実装できます。
Java コード
class Test { public function __get($key) { echo $key . " が存在しません" } } $t = new Test(); name が存在しませんと出力されます。
class Test { public function __get($key) { echo $key . " が存在しません" } } $t = new Test(); echo $t->name; が出力されます: name は存在しません
4 .__set() は、存在しないプロパティに値を書き込もうとするときに呼び出されます。 Java コード
クラス
テスト { public function __set($key,$value) { echo 'pair'.$key 。
"追加の値".$value; } } $t = new Test() $t->name = "aninggo"; が出力されます。
付加価値の高い aninggo
class Test { public function __set($key,$value) { echo
'right'.$key . "value".$value; } } $t = new Test(); $t->name = "aninggo";
出力: append value to name aninggo
5.__call() このメソッドは、オブジェクトに存在しないメソッドを呼び出そうとしたときに呼び出されます。 Java コード
クラス
Test { public function __call($Key, $Args) { echo "{$Key} を呼び出したい
メソッドは存在しません。渡すパラメータは次のとおりです: " . print_r($Args, true); } } $t = new Test();
$t->getName(aning,go);
class Test { public function __call($Key,
$Args) { echo "呼び出したい {$Key} メソッドが存在しません。渡されたパラメータは次のとおりです: " . print_r($Args, true);
$t = new Test(); $t->getName(aning,go);
プログラムは次のように出力します:
Java コード
呼び出したい getName メソッドが存在しません。パラメータは次のとおりです: Array
(
[0] => aning
[1] => go
)
呼び出したい getName メソッドが存在しません。パラメータは次のとおりです: Array
(
[0] => aning
[1] => go
)
6.__toString() はオブジェクトを印刷するときに呼び出されます
このメソッドは Java の toString メソッドに似ています。オブジェクトを直接印刷する場合は、この関数を呼び出します
class Test { public function __toString() { return "Print Test" } } $t = new Test(); を実行するときは、 echo $t; t->__toString(); を出力するために呼び出されます
Print Test
7.__clone() オブジェクトが複製されると、それが呼び出されます
class Test { public function __clone() { echo "コピーされましたわかりました! "; } }$t = new Test(); $t1 = clone $t;プログラム出力: クローンが作成されました。
原文はスクリプトハウスさんの「phpマジックメソッド解説書」より転載です
http://www.bkjia.com/PHPjc/780019.html