ホームページ >バックエンド開発 >PHPチュートリアル >php マジック メソッドの詳細な使用手順_PHP チュートリアル
PHP5.0 以降、PHP にはオブジェクト指向のメソッドが増え、PHP がより強力になりました。 !
ここでは、PHP のマジック メソッドと呼ばれる機能をいくつか紹介します。実際、一般的なアプリケーションでは、誰もがこれらを使用する必要があります。 !
1.__construct() オブジェクトをインスタンス化するとき、オブジェクトのこのメソッドが最初に呼び出されます。
Javaコード
class Test { function __construct() { echo "前" } } $t = new Test();
class Test { function __construct() { echo "前" } } $t = new Test();
出力は次のとおりです:
スタート
php5 オブジェクト モデルと同じクラス名の関数がクラスのコンストラクターであることがわかっているため、コンストラクターと __construct() メソッドを同時に定義すると、php5 はデフォルトで __construct( ではなくコンストラクターを呼び出します) ) 関数、so_ _construct() はクラスのデフォルトのコンストラクターとして機能します
2.__destruct() このメソッドは、オブジェクトが削除されるか、オブジェクトの操作が終了するときに呼び出されます。
Javaコード
class Test { function __destruct() { echo "end" } } $t = new Test(); を出力します。
class Test { function __destruct() { echo "end" } } $t = new Test(); を出力します。
オブジェクトの操作が完了したらリソースを解放するなどの操作を実行できます
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(); name が存在しません と出力されます。
4.__set() は、存在しないプロパティに値を書き込もうとするときに呼び出されます。
Javaコード
class Test { public function __set($key,$value) { echo 'pair'.$key . "value".$value; } $t = new Test();出力: name に値 aninggo を追加します
class Test { public function __set($key,$value) { echo 'pair'.$key . "value".$value; } $t = new Test();出力: name に値 aninggo を追加します
5.__call() このメソッドは、オブジェクトに存在しないメソッドを呼び出そうとしたときに呼び出されます。
Javaコード
class Test { public function __call($Key, $Args) { echo "呼び出したい {$Key} メソッドが存在しません。渡したパラメータは次のとおりです: " . print_r($Args, true); t = 新しいテスト(); $t->getName(aning,go);
class Test { public function __call($Key, $Args) { echo "呼び出したい {$Key} メソッドが存在しません。渡したパラメータは次のとおりです: " . print_r($Args, true); t = 新しいテスト(); $t->getName(aning,go);
プログラムは次のように出力します:
Javaコード
呼び出そうとしている getName メソッドは存在しません。パラメータは次のとおりです: 配列
(
[0] =>
[1] => 行きます
)
呼び出そうとしている getName メソッドは存在しません。パラメータは次のとおりです: 配列
(
[0] =>
[1] => 行きます
)
6.__toString() はオブジェクトを印刷するときに呼び出されます
このメソッドは Java の toString メソッドに似ています。この関数はオブジェクトを直接出力するときに呼び出されます
class Test { public function __toString() { return "Print Test" } } $t = new Test();
echo $t; が実行されると、$t->__toString(); が呼び出され、
が出力されます。
印刷テスト
7.__clone() はオブジェクトのクローン作成時に呼び出されます
class Test { public function __clone() { echo "クローンされました!" } }$t = new Test(); $t1 = clone $t;プログラム出力: クローンされました!
http://www.bkjia.com/PHPjc/478735.html