PHP は、__ (アンダースコア 2 つ) で始まるすべてのクラスメソッドをマジックメソッドとして予約します。したがって、メソッドを定義するときは、マジック メソッドを除き、2 つのアンダースコア接頭辞を使用しないことをお勧めします。
マジック メソッドには、__construct()、__destruct()、__call()、__callStatic()、__get()、__set()、__isset()、__unset()、__sleep()、__wakeup()、__toString( などのメソッドが含まれます) )、__invoke()、__set_state()、__clone()、__debugInfo()。
次に、__sleep() と __wakeup() の違いについて話しましょう:
構文:
1 public array __sleep(void)2 3 void __wakeup(void)
serialize() 関数は、クラスにマジック メソッド __sleep() があるかどうかを確認します。存在する場合、このメソッドはシリアル化が実行される前に呼び出されます。この関数を使用すると、オブジェクトをクリーンアップし、シリアル化する必要があるオブジェクト内のすべての変数の名前を含む配列を返すことができます。メソッドが何も返さない場合、NULL がシリアル化され、E_NOTICE レベルのエラーが生成されます。
__sleep() メソッドは、コミットされていないデータを送信し、同様のクリーニング操作を実行するためによく使用されます。同時に、この機能は、大きなオブジェクトがいくつかあるものの、すべてを保存する必要がない場合に便利です。
対照的に、unserialize() は __wakeup() メソッドがあるかどうかを確認します。存在する場合、__wakeup メソッドが最初に呼び出され、オブジェクトに必要なリソースが事前に準備されます。
__wakeup() は、データベース接続の再確立やその他の初期化操作の実行などの逆シリアル化操作でよく使用されます。
りー