php には多くのマジックメソッドが存在し、これらのメソッドはトリガーされると自動的に呼び出されます。これらの便利なメソッドは、プログラミングの便利さを大幅に向上させることができます。
__construct ():新しいオブジェクトが作成されるときに自動的にこのメソッドが呼び出され、オブジェクトのメンバ変数を初期化するために使用されます。これはおそらく php で最も一般的に使用されるマジックメソッドであり、ほとんどのオブジェクトでデータを初期化する必要があります。
__destruct ():オブジェクトが破棄される前に自動的にこのメソッドが呼び出され、リソースのクリーンアップ(例:データベース接続の自動切断など)に使用されます。
__invoke ():オブジェクトが関数として呼び出される場合に自動的にこのメソッドが呼び出されます。主にクラスを直接呼び出すために使用され、クロージャ関数はデフォルトで__invoke () を実装しています。
class Test{
public $name;
function __construct($name){
$this->name = $name;
}
function __invoke(){
return 'Hello '.$this->name;
}
}
$closure = function($name){
return 'Hello '.$name;
};
$test = new Test('Lisi');
echo $test();//Hello Lisi
echo $closure('Lisi'); //Hello Lisi
echo $closure->__invoke('Zhangsan'); //Hello Zhangsan
__get ():存在しないまたはプライベートなプロパティにアクセスしようとした場合に自動的にこのメソッドが呼び出されます。
__set ():存在しないまたはプライベートなプロパティを設定しようとした場合に自動的にこのメソッドが呼び出されます。
__call ():存在しないまたはプライベートなメソッドを呼び出そうとした場合に自動的にこのメソッドが呼び出されます。
__callStatic ():存在しないまたはプライベートな静的メソッドを呼び出そうとした場合に自動的にこのメソッドが呼び出されます。
__toString ():オブジェクトを文字列に変換しようとした場合に自動的にこのメソッドが呼び出されます。
__clone ():オブジェクトを複製しようとした場合に自動的にこのメソッドが呼び出され、オブジェクトのメンバ変数を複製します。
__sleep ():オブジェクトをシリアライズする際に自動的にこのメソッドが呼び出され、インスタンスに含まれるすべての値の名前の配列を返します。
__wakeup ():オブジェクトをデシリアライズする際に自動的にこのメソッドが呼び出され、すべての値を再読み込みします。
__isset ():存在しないまたはプライベートなプロパティが設定されているかどうかを判断する際に自動的にこのメソッドが呼び出されます。
__unset ():存在しないまたはプライベートなプロパティを削除しようとした場合に自動的にこのメソッドが呼び出されます。
__set_state ():var_export () 関数を使用してクラスまたはオブジェクトをエクスポートする際に自動的にこのメソッドが呼び出されます。
__debugInfo ():var_dump () 関数を呼び出す際に自動的にこのメソッドが呼び出され、オブジェクトのデバッグ情報を返します。