PHP クラスは多くの点で他の言語とは異なります。 PHP では、非常に奇妙な方法で静的メソッド内でインスタンス メソッドを呼び出すことができ、クラス自体の静的メンバーにアクセスするためのキーワード self および static が提供されます。 Self は常に現在のクラスを参照しますが、静的メンバーは継承およびオーバーライドが可能です。
PHP は、二重アンダースコアで始まるいくつかのマジック メソッド (構築メソッドと一部の組み込み「インターフェイス」を含む) も提供します。以下は、PHP の既存のマジック メソッドです。
1、__construct($args) および __destruct(void)
つまり、コンストラクターとデストラクターのメソッドは他の言語と同じです。コンストラクターはインスタンス化時に呼び出され、デストラクターはオブジェクトがリサイクルされるときに呼び出されます。デストラクター メソッドを使用すると、ポインターによって参照される一部のリソースを閉じるなど、実行後にリソースを自動的に再利用できます。
2、mixed __call (string $name
, array $arguments
) 和 mixed __callStatic (string $name
, array $arguments
、
array $arguments
mixed
__callStatic
(
string 、array $arguments
)$name
オブジェクトに存在しないメソッドやクラスに存在しないstaticメソッドを呼び出すと、上記2つのメソッドがそれぞれ呼び出されます。これら 2 つのメソッドを使用すると、特別な動的操作メカニズムを使用して、どこからともなくメソッドを作成できます。個人的には、コードの保守が困難になり、IDE でサポートされなくなるため、これらをできるだけ使用しないことをお勧めします。
3、
__get
(string ) と __set (string $name ,mixed $value) の混合
$name
) 和 __unset (string $name
__callと同様に、存在しないプロパティを呼び出すときに実行されます。これも控えめに使用することをお勧めします。
4
オブジェクトに存在しないプロパティに対して isset() または empty() が呼び出された場合、 __isset() が呼び出されます。 unset が呼び出されるときに __unset も呼び出されます。 5、array __sleep (void
) および__wakeup (void)
これら 2 つのメソッドはそれぞれシリアル化の前後に呼び出され、シリアル化するオブジェクトのプロパティを整理し、シリアル化後の状態を復元するために使用できます。 6、string
__toString (void)
echo new MyClass(); のように、オブジェクトを文字列に変換する必要がある場合に、PHP に変換方法を指示します。
7、混合__invoke()
このメソッドは、オブジェクト変数が関数として呼び出されたときに呼び出されます。
$properties
8、オブジェクト __set_state (
配列 )
オブジェクトに対して var_export() が呼び出されると、オブジェクト自体が戻り値で置き換えられ、エクスポートされた変数のデータを整理できるようになります。
🎜🎜🎜9、__clone()🎜🎜🎜🎜🎜このメソッドを使用すると、.net の ICloneable インターフェイスと同様に、オブジェクトをコピーしながらプロパティのディープ コピーを作成できます。
自動読み込みについて:
PHP 自体には自動ロード機構はありませんが、新しいバージョンでは関数を登録するための spl_autoload_register 関数が提供されており、存在しないクラスを使用する場合、開発者は登録された関数を手動で実装する必要があります。関数ロードメカニズム。作者はインクルードの仕組みを深く理解していませんが、ファイルの有無も検出する必要があると作業効率が下がる可能性があります。