PHPのマジックメソッドとは何ですか?またその機能は何ですか?

青灯夜游
リリース: 2023-02-26 10:10:01
オリジナル
2762 人が閲覧しました

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

PHPのマジックメソッドとは何ですか?またその機能は何ですか?

#__construct()

__construct() はクラスのコンストラクターであり、最も一般的に使用される関数です。オブジェクトを作成するときに、コンストラクターで初期化作業を行うことができます。インスタンス化時に対応する数のパラメーターが渡される限り、コンストラクターには任意の数のパラメーターを定義できます。コンストラクターで例外が発生すると、オブジェクトの作成が妨げられます。

__desctruct()

__desctruct() はクラスのデストラクターです。通常、オブジェクトが破棄されるか、スクリプトの実行が終了すると、自動的に呼び出されます。パラメータを受け取りません。データベース接続を閉じるなど、一部のクリーンアップ作業はデストラクターで実行されることがよくあります。

__call()

__call() は、存在しないメソッド、またはアクセスできないメソッドを呼び出すときに呼び出されます。これは 2 つのパラメータを受け取ります。1 つは呼び出されるメソッドの名前で、もう 1 つは関数パラメータを含む配列です。静的メソッドが存在する場合、このメソッドを使用して、サブオブジェクト

__callStatic()

__callStatic() 内の同じ名前の関数を呼び出すことができます。呼び出された関数が存在しないか、権限が不十分な場合に呼び出されます。これは 2 つのパラメータを受け取ります。1 つは呼び出されるメソッドの名前で、もう 1 つは関数パラメータを含む配列です。使い方は __call() とまったく同じです。

__get()

__get() は、存在しないプロパティまたは非公開プロパティにアクセスしようとすると呼び出されます。アクセスされた属性の名前を表すパラメーターを受け取り、変更しようとすると属性の値

__set()

__set() を返します。使用不可 属性にアクセスするときに呼び出され、属性の名前を示すパラメーターと属性の値を示すパラメーターの 2 つを受け取ります。

__isset()

__isset() は、アクセスできないプロパティに対して isset() または empty() メソッドが呼び出されたときに呼び出されます。属性の名前。プロパティが存在するかどうかを示すブール値を返す必要があります。


__unset()

__unset() は、アクセスできないプロパティを破棄するために unset() 関数が呼び出されたときに呼び出されます。プロパティの名前。

__sleep()

__sleep() は、オブジェクトをシリアル化するとき (serialize() を呼び出すとき) に呼び出されます。パラメーターは取らず、シリアル化する必要があるすべてのプロパティを含む配列を返す必要があります。このマジック メソッド内では、他の操作も実行できます。

##注意すべき点は、実行中のオブジェクトに影響を与える可能性があるため、この関数では破棄操作を実行しないことです。

#__wakeup()

__wakeup() は、格納されたオブジェクトを逆シリアル化するときに呼び出されます。パラメータを受け取らず、値も返しません。これを使用して、シリアル化中に失われたデータベース接続やリソースを処理できます。

__toString()

__toString() 文字列としてオブジェクトを使用する場合、呼び出されますが、呼び出されません。パラメータを受け取ります。このメソッドを使用すると、オブジェクトの表現を定義できます。

__invoke()

関数を呼び出してオブジェクトを呼び出すときの応答メソッド

__set_state()

この静的メソッドは、クラスをエクスポートするために var_export() を呼び出すときに呼び出されます。

__clone()

__clone() は上記の問題を解決できます。このマジック メソッドは、オブジェクトに対して clone キーワードが使用されるときに呼び出されます。

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート