ホームページ >バックエンド開発 >PHPチュートリアル >PHPマジック関数の予備探索(1)_PHPチュートリアル
Php5.0 は、リリース以来、多くのオブジェクト指向機能、特にコーディングを簡素化し、システムをより適切に設計できるようにする多くの使いやすいマジック メソッドを提供してきました。今日はphp5.0が提供するマジックメソッドについて学びます。
1.__construct() オブジェクトをインスタンス化するとき、オブジェクトのこのメソッドが最初に呼び出されます。
class Test { function __construct() { echo "before"; } } $t = new Test(); |
出力は次のとおりです:
start
同じクラス名の php5 オブジェクト モデルと関数がクラスのコンストラクターであることがわかっているため、両方のコンストラクターを定義するとその場合、php5 は __construct() 関数を呼び出す代わりにデフォルトでコンストラクターを呼び出すため、オブジェクトが呼び出されたときに __construct() がクラスのデフォルトのコンストラクターとして機能します
2.__destruct()が削除されるか、オブジェクト操作によってこのメソッドが終了します。
class Test { function __destruct() { echo "end"; } } $t = new Test();将会输出end |
オブジェクト操作の最後にリソースを解放できます
3.__get()は、存在しないプロパティを読み取ろうとするときに呼び出されます。
オブジェクトに存在しないプロパティを読み取ろうとすると、PHP はエラー メッセージを表示します。クラスに __get メソッドを追加すると、この関数を使用して Java のリフレクションと同様のさまざまな操作を実装できます。
class Test { public function __get($key) { echo $key . " 不存在"; } } $t = new Test(); echo $t->name; 就会输出:name 不存在 |
4.__set() は、存在しないプロパティに値を書き込もうとするときに呼び出されます。
class Test { public function __set($key,$value) { echo '对'.$key . "附值".$value; } } $t = new Test(); $t->name = "aninggo"; 就会输出:对 name 附值 aninggo |
5.__call() このメソッドは、オブジェクトに存在しないメソッドを呼び出そうとしたときに呼び出されます。
class Test { public function __call($Key, $Args) { echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); } } $t = new Test(); $t->getName(aning,go); |
プログラムは次のように出力します:
呼び出したい getName メソッドは存在しません。パラメータは次のとおりです: Array
(
[0] => aning
[1] => go
)
6.__toString() はオブジェクトを印刷するときに呼び出されます
このメソッドは Java の toString メソッドに似ています。オブジェクトを直接印刷するときは、この関数を呼び出します
class Test { public function __toString() { return "打印 Test"; } } $t = new Test(); echo $t; |
echo $t; を実行すると、$t->__toString() が呼び出されて出力されます
Print Test
7.__clone () はオブジェクトが複製されるときに呼び出されます
class Test { public function __clone() { echo "我被复制了!"; } }$t = new Test(); $t1 = clone $t;程序输出:我被克隆了! |
1