ホームページ  >  記事  >  バックエンド開発  >  phpの魔法のメソッドとは何ですか?

phpの魔法のメソッドとは何ですか?

(*-*)浩
(*-*)浩オリジナル
2019-10-09 10:53:462753ブラウズ

オブジェクト指向プログラミングでは、PHP はプログラミングに非常に便利な一連のマジック メソッドを提供します。 PHP のマジック メソッドは通常、__ (2 つのアンダースコア) で始まり、明示的な呼び出しを必要としませんが、特定の条件によってトリガーされます。

phpの魔法のメソッドとは何ですか?

__construct()、__destruct()、__call()、__callStatic()、__get()、__set()、__isset()、__unset()、メソッド__sleep()、__wakeup()、__toString()、__invoke()、__set_state()、__clone()、__debugInfo() などは、PHP では Magic メソッドと呼ばれます。 (推奨される学習: PHP ビデオ チュートリアル )

注: 独自のクラス メソッドに名前を付ける場合、これらのメソッド名を使用する場合を除き、これらのメソッド名を使用することはできません。魔法の機能。

注: PHP は、__ (2 つのアンダースコア) で始まるすべてのクラス メソッドをマジック メソッドとして予約します。したがって、上記のマジック メソッドを除き、クラス メソッドを定義する場合は、先頭に __ を付けないことをお勧めします。

__sleep() と __wakeup()

public __sleep ( void ) : array
__wakeup ( void ) : void

serialize() 関数は、クラスにマジック メソッド __sleep() があるかどうかを確認します。存在する場合、このメソッドが最初に呼び出され、次にシリアル化操作が実行されます。この関数を使用すると、オブジェクトをクリーンアップし、シリアル化する必要があるオブジェクト内のすべての変数の名前を含む配列を返すことができます。メソッドが何も返さない場合、NULL がシリアル化され、E_NOTICE レベルのエラーが発生します。

#注:

__sleep() は、親クラスのプライベート メンバーの名前を返すことはできません。そうすると、E_NOTICE レベルのエラーが発生します。代わりに Serializable インターフェイスを使用できます。

__sleep() メソッドは、コミットされていないデータや同様のクリーンアップ操作を送信するためによく使用されます。同時に、この機能は、大きなオブジェクトがいくつかあるものの、すべてを保存する必要がない場合に便利です。

対照的に、unserialize() は __wakeup() メソッドがあるかどうかを確認します。存在する場合、__wakeup メソッドが最初に呼び出され、オブジェクトに必要なリソースが事前に準備されます。

__wakeup() は、データベース接続の再確立やその他の初期化操作の実行など、逆シリアル化操作でよく使用されます。

rree

以上がphpの魔法のメソッドとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。