ホームページ >バックエンド開発 >PHPの問題 >phpの魔法のようなメソッドとは何ですか

phpの魔法のようなメソッドとは何ですか

王林
王林オリジナル
2020-08-20 13:50:172435ブラウズ

php のクラス マジック メソッドは次のとおりです: 1. __sleep、シリアル化する必要があるオブジェクト内のすべての変数の名前を含む配列を返します; 2. __tostring、シリアル化されたときに出力されるクラスを返します。文字列として扱われる 内容; 3. __construct、構築メソッド; 4. __destruct、破壊メソッド。

phpの魔法のようなメソッドとは何ですか

PHP では、二重アンダースコア (__) で始まるすべてのクラス メソッドをマジック メソッドとして保持します。

(推奨チュートリアル: php グラフィック チュートリアル)

魔法のメソッドを見てみましょう:

1, __sleep: を含む配列を返します。シリアル化する必要があるオブジェクト内のすべての変数の名前。

serialize 関数は、クラスをシリアル化するときに、まず __sleep メソッドがクラスに存在するかどうかを確認します。存在する場合、このメソッドはシリアル化操作が実行される前に呼び出され、__sleep によって返された配列内のプロパティのみがシリアル化されます。 __sleep が何も返さない場合、null がシリアル化され、E_NOTICE レベルのエラーが生成されます。

#sleep は親クラスのプライベート メンバーを返すことができません。そうでない場合は、E_NOTICE レベルのエラーが発生します。このメソッドは、オブジェクトが大きいものの、すべてのデータを保持する必要がない場合に便利です。

2. __wakeup: __sleep とは対照的に、unserialize 関数が逆シリアル化しているときは、まず __wakeup メソッドがクラスに存在するかどうかを確認します。存在する場合は、メソッドが最初に呼び出され、次に逆シリアル化操作が行われます。実行される。逆シリアル化またはその他の初期化操作の前に、一部のオブジェクトに必要なリソースを準備するために使用されます。

3. __tostring: クラスが文字列として扱われる場合に出力される内容を返します。このメソッドは文字列を返す必要があり、このメソッドで例外をスローすることはできません。そうでない場合は、致命的なエラーが発生します。

PHP5.2 より前では、このメソッドは echo と print を直接使用する場合にのみ有効でしたが、それ以降は、どの文字列環境でも有効になります。__toString メソッドが定義されていないオブジェクトが文字列に変換された場合は、致命的なエラーが発生します。

(ビデオ チュートリアルの推奨: php ビデオ チュートリアル)

4. __invoke: PHP5.3 以降、オブジェクトをオブジェクトとして呼び出そうとするときにこのメソッドが呼び出されます。関数。 。

5. __set_state: PHP5.1 以降、この静的メソッドは、クラスをエクスポートするために var_export 関数が呼び出されるときに呼び出されます。このメソッドにはパラメーターが 1 つだけあり、キーとして属性、値として属性値を含む配列です。このメソッドを使用して、どのメンバーをエクスポートできるかを制御できます。

6. __debugInfo: PHP5.6 以降、オブジェクトの属性を出力するために var_dump 関数が呼び出されるときに、このメソッドが呼び出されます。このメソッドは、どの属性を出力できるかを制御するために使用できます。メソッドが定義されていない場合は、すべての public、protected、および private プロパティが出力されます。印刷可能なプロパティを含む配列を返します。

7. __​​construct: コンストラクター。

8. __destruct: デストラクター。

9、__set、__get、__isset、__unset: オーバーロードされた属性。

10、__call、__callstatic: オーバーロードされたメソッド。

11. __clone: オブジェクトのコピー。

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

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