文書化された魔法の機能を必要としない限り、PHPでは魔法を使用しないでください。
これらの特定のオブジェクトを使用すると、特定のイベントに反応することができます。これは、オブジェクトに特定のことが起こったときに、そのインスタンスでどのように反応すべきかを定義できることを意味します。
これらのメソッドはそれぞれ自動的にトリガされ、これらの状況で何が起こるべきかを定義しています。
おそらく、オブジェクトを扱うときに__construct()
と__destruct()
以外のものを使用する必要はありません。
__construct()
- オブジェクトが初めて作成されたときに呼び出されます。パラメータと依存関係を注入して、オブジェクトを設定することができます。
__destruct()
- オブジェクトが破棄されたときに呼び出されます。ここにクリーンアップコードを書くことができます。開いているデータストリーム、データベース接続などを閉じます。
__get()
- プロパティの取得リクエストをリッスンします。
__set()
- プロパティの要求をリッスンします。
__isset()
- オブジェクトのプロパティでisset()またはempty()を呼び出すとトリガーされます。
__unset()
- オブジェクトのプロパティでunset()を呼び出すとトリガされます。
__toString()
- オブジェクトが文字列のように扱われたときの動作を定義できます。
__sleep()
- ここで定義されているコードは、serialize()を使用する前に実行されます。したがって、オブジェクトのどのプロパティをシリアル化するかを定義できます。
__wakeup()
- これは、シリアル化中に停止する可能性のあるタスクを再初期化するために使用されます。
__invoke()
- あなたがクラスを "起動"し、それを関数のように使用する場合のクラスの振る舞いを定義します。
__clone()
- オブジェクトのクローン作成が完了するとトリガーされます。 (あなたがあなたのオブジェクトをコピーしても、それらはまだそれを参照しているので、オリジナルにリンクされています。)
__debugInfo
- オブジェクトに対してvar_dump()を使用するとトリガーされます。ダンプに表示する情報の種類を制御するために使用することができます。メソッドがオブジェクトに定義されていない場合は、public、protected、およびprivateのすべてのプロパティが表示されます。
[マジックメソッド]を見てください(http://php.net/manual/en/language.oop5.magic.php) –
'__toString()'は 'echo $ class'を実行するときですhttps:// repl.it/Cd6w/1 –
@bubはい、私はやったが、私はまだ実世界でその使用を見つけることはありません。あなたはリンクを掲示する代わりに説明できますか?いくつかの例と説明が良いでしょう。 –