ホームページ  >  記事  >  バックエンド開発  >  phpの魔法のメソッドとは何ですか?

phpの魔法のメソッドとは何ですか?

青灯夜游
青灯夜游オリジナル
2021-06-30 13:55:251646ブラウズ

マジック メソッドには、「__construct()」、「__destruct()」、「__set()」、「__get()」、「__isset()」、「__unset()」、「__sleep()」が含まれます。 "、"__wakeup()"、"__call()" など。

phpの魔法のメソッドとは何ですか?

このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

php magic (スキル ) メソッド

オブジェクト指向プログラミングでは、PHP には一連のマジック メソッドが用意されており、これらのマジック メソッドはプログラミングに非常に便利であり、PHP におけるそれらの役割は非常に重要です。 PHP のマジック メソッドは通常、__ (2 つのアンダースコア) で始まり、明示的に呼び出す必要はありませんが、特定の条件下で自動的に呼び出されます。

#マジック メソッドFunction__construct()クラスのインスタンス化時に自動的に実行されます。 ##destruct()# を呼び出す クラス オブジェクトが使用されるときに自動的に呼び出す 未定義のプロパティに値を割り当てるときに自動的に呼び出されます未定義のプロパティが呼び出されたときに自動的に呼び出されます #__isset()isset() または empty() 関数を使用すると自動的に呼び出されます__unset()unset( を使用すると自動的に呼び出されます) ) __sleep()serialize を使用したシリアル化時に自動的に呼び出されます__wakeup()使用unserialize 逆シリアル化時に自動的に呼び出されます##__callStatic ()存在しない静的メソッドを呼び出すときに自動的に呼び出されます__toString()オブジェクトを文字列に変換するときに自動的に呼び出されます__invoke()オブジェクトをメソッドとして呼び出そうとすると自動的に呼び出されます__set_state() 自動的に呼び出されますvar_export() 関数を使用する場合、配列パラメーターを受け入れます__clone()clone を使用してオブジェクトをコピーすると自動的に呼び出されます__debugInfo()var_dump() を使用してオブジェクト情報を出力するときに自動的に呼び出されます

以下は、一般的に使用されるいくつかのマジック メソッドの簡単な紹介です:

1. __set() メソッド

は、未定義または非表示のクラス属性に値を割り当てるときに自動的に呼び出されます。現在の環境の __set() メソッド。このメソッドを定義する構文形式は以下のとおりです。

public function __set($key, $value){
    ... ... ;
}

このうち、パラメータ $key は操作対象の変数名、$value は変数 $key の値です。

2. __get() メソッド

現在の環境で未定義または非表示のクラス属性を呼び出したり取得したりする場合、メソッドの構文形式を定義するために __get() メソッドが自動的に呼び出されます。次のようになります。

public function __get($name){
    ... ... ;
}

パラメータ $name は、操作される変数の名前です。

3. __isset() メソッド

isset() または empty() 関数が、アクセスできない属性またはクラス内に存在しない属性に対してクラスの外部で使用される場合、__isset()メソッドが自動的に呼び出されます。このメソッドの構文形式は次のとおりです:

public function __isset($name){
    ... ... ;
}

パラメータ $name は、アクセスされる属性の名前です。

isset() 関数は、変数が存在し、NULL ではないかどうかをチェックし、変数をパラメータとして渡します。渡された変数が存在する場合は true を返し、そうでない場合は false を返します。

empty() 関数は、変数が空かどうかをチェックできます。また、変数をパラメータとして渡す必要があります。変数が存在しない場合、または変数の値が FALSE に等しい場合、変数は存在しないものとみなされます。

クラス内のパブリック メンバーにはクラスの外部からアクセスできますが、プライベート メンバーにはクラスの外部からアクセスできません。つまり、 isset() または empty() 関数を使用して、クラス内のパブリック プロパティが存在するかどうかを確認できますが、これら 2 つの関数はクラス内のプライベート プロパティに対しては無効です。

isset() または empty() 関数を使用してクラス内のプライベート プロパティを検出したい場合は、 __isset() メソッドをクラスに追加するだけで済みます。 ) または empty() 関数を使用すると、クラス内の __isset() メソッドが自動的に呼び出されます。

4. __unset() メソッド

アクセスできない属性またはクラス内に存在しない属性に対してクラス外で unset() 関数が使用される場合、__unset() メソッドは次のようになります。このメソッドの構文形式は次のとおりです:

public function __unset($name){
    ... ... ;
}

パラメータ $name は、アクセスする属性の名前です。

まず、unset() 関数を見てみましょう。unset() 関数の機能は、指定された変数を削除することです。1 つ以上の変数をパラメータとして渡す必要があります。また、関数戻り値はありません。

同様に、unset() 関数を使用して、クラス内のメンバー属性をクラス外で削除することもできます。上で紹介した __isset() メソッドと同様に、クラス内のパブリック属性を削除したい場合は、 unset() 関数を直接使用できますが、クラス内のプライベート属性を削除したい場合は、 __unset 関数を追加する必要があります。 () をクラス.メソッドに追加します。

5. __call() メソッド

クラス内にアクセスできないメソッドまたは存在しないメソッドを呼び出す場合、__call() メソッドが呼び出されます。このメソッドの構文形式は次のとおりです。

public function __call($name, $arguments){
    ... ... ;
}

$name は呼び出されるメソッドの名前で、$arguments は $name に渡されるパラメータの配列です。

呼び出されたメソッドが存在しない場合、__call() メソッドが自動的に呼び出され、プログラムの実行が継続されるため、呼び出しメソッドが存在しない場合のエラーによるプログラムの終了が回避されます。

6. __clone() メソッド

clone キーワードを使用してオブジェクトをコピーできます。コピーが完了すると、__clone() メソッドが定義されている場合、新しく作成されたオブジェクト (オブジェクトをコピーして生成される) を実行すると、__clone() メソッドが自動的に呼び出され、これを通じて必要な操作を実行できます。 __clone() メソッドの構文形式は次のとおりです。

public function __clone(){
    ... ... ;
}

この関数にはパラメーターを渡す必要はありません。

推奨学習: 「PHP ビデオ チュートリアル

##__set()
__get()
##__call() 存在しないメソッドの呼び出し時に自動的に呼び出されます

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

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