この記事はphpでよく使われるマジックメソッドを詳細に整理してまとめ、参考として共有します。具体的な内容は以下の通りです
1. PHP は「__」で始まるすべてのメソッドをマジック メソッドとして扱うため、カスタマイズされたメソッドは「__」で始めることはできません
PHP が提供するオーバーロードとは、属性またはメソッドを動的に作成することを指します。オーバーロードは魔法の方法によって実現されます。これらのマジック メソッドのパラメータを渡すことはできません。__get()、__set()、__isset()、__unset() はクラス属性のオーバーロードを実装します。
2. クラス内のアクセスできない属性にアクセスすると、__get() メソッドが呼び出されます
3. クラス内のアクセスできない属性にアクセスする場合、さまざまな状況に応じて __get()、__set()、__isset()、__unset() が呼び出されます。属性にアクセスするときは、関数 isset() または empty() を使用します。 () 関数が使用されると、__isset() メソッドが呼び出されます。
4. これら 4 つのメソッドは static キーワードを使用して定義できません。php5.3.0 以降、これら 4 つのメソッドを静的メソッドを使用して定義すると、警告レベルの警告が発生します。
5. アクセスできない属性とは: (1) クラス内にない属性、(2) クラス外でアクセスされるプライベート変数。メソッドのオーバーロードは __call() と __callstatic() によって実装されます。この 2 つの違いは、コンテキストが静的メソッドであるかどうかです。後者は、アクセスできない静的メソッドが呼び出されたときに呼び出されます。 __callstatic()はphp5.3.0で追加されました。
6. __sleep() と __wakeup()
Serialize() はシリアル化するときに、まず __sleep() 関数が存在するかどうかを確認し、存在する場合は最初に __sleep() を呼び出し、メソッドが何も返さない場合は null を返します。シリアル化され、通知レベルのエラーが生成されます。
__wakeup() メソッドは __sleep() の逆で、unserialize() が呼び出されたときに呼び出されます
7. __toString() は、文字列に変換する方法をクラスに決定させます。php5.2.0 より前では、このメソッドは echo または print メソッドと組み合わせた場合にのみ有効であり、php5.2.0 以降は printf( と組み合わせることができます。 ) を変更しますが、変更する場合は %d などの文字以外の修飾子は使用できません。
8. __invoke()、関数を呼び出してオブジェクトを呼び出そうとすると、この関数は php5.3 以降でのみ有効になります。
9. __set_state() 静的メソッド。この静的メソッドは、var_export() が呼び出された場合にのみ呼び出されます。このメソッドは、php5.1.0 以降で有効になります。唯一のパラメータは配列を受け取ることです。
10. __construct() と __destruct()、コンストラクターとデストラクター コンストラクターは主にクラスの初期化に使用され、オブジェクトへのすべての参照が削除された後、またはオブジェクトが明示的に破棄されたときに実行されます。デストラクターで例外をスローすることは許可されていません。そうしないと、すべての http ヘッダーが送信されたときに、スクリプトの最後にデストラクターが呼び出されます。
11. __clone()、オブジェクトのコピー、このメソッドは直接呼び出すことはできません。clone キーワードを使用して明示的に呼び出す必要があります
コード:
リーリー上記はすべて、php の一般的な魔法のメソッドに関するものです。皆さんの学習に役立つことを願っています。