ホームページ  >  記事  >  バックエンド開発  >  php マジックメソッドの理解

php マジックメソッドの理解

藏色散人
藏色散人オリジナル
2020-09-12 11:06:473434ブラウズ

PHP では、「__」、つまり 2 つのアンダースコアで始まるすべてのクラス メソッドがマジック メソッドとして予約されています。PHP のマジック メソッドには、「__construct()」、「__destruct()」、および「 __call()」、「__callStatic()」、「__get()」など。

php マジックメソッドの理解

# 推奨: 「

PHP ビデオ チュートリアル

#魔法のメソッド

__construct()、__destruct()、__call()、__callStatic()、__get()、__set()、__isset()、__unset()、__sleep()、__wakeup()、__toString()、__invoke()、__set_state ()、__clone()、__debugInfo() は、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() は、データベース接続の再確立やその他の初期化操作の実行など、逆シリアル化操作でよく使用されます。

以上がphp マジックメソッドの理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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