PHPの魔法のメソッドとは何ですか?とそれらを実装する方法?



この記事では、PHPのさまざまなマジックメソッドの詳細で包括的な知識を例とともに提供します。

に 、特殊関数は、自動的に呼び出すことができ、これらの関数内のコードを実行するために関数呼び出しを必要としないように定義できます。この機能は、マジックメソッドと呼ばれる特別なメソッドで使用できます。この記事では、PHPのトップマジックメソッドについて説明します。

整数javaの桁を合計する

PHPのマジックメソッドとは何ですか?

2つのアンダースコア(__)で始まるメソッドは、一般にPHPではMagicメソッドと呼ばれます。これらのメソッド名は、いくつかのリストに限定されています PHP 予約されているサポートされているキーワード。したがって、PHPマジックメソッドの名前で関数を定義しないでください。





Magic-Methods-in-PHP

通常、これらの関数はユーザーが定義する必要があり、明示的に呼び出す必要はありません。



PHPのマジックメソッドのリスト

  • __construct()
  • __destruct()
  • __call($ fun、$ arg)
  • __callStatic($ fun、$ arg)
  • __get($ property)
  • __set($ property、$ value)
  • __isset($ content)
  • __unset($ content)
  • __睡眠()
  • __目を覚ます()
  • __toString()
  • __invoke()
  • __set_state($ array)
  • __クローン()
  • __デバッグ情報()
  • __construct(): これは、オブジェクトの作成後に自動的に呼び出されるメソッドです。ここでは、オブジェクトの作成時に渡される任意の数の引数を定義できます。
クラスサンプル{functionuser_def(){echo 'ユーザー定義コンストラクター'} function __construct(){echo '事前定義コンストラクター'}} $ obj = new sample()?>

  • __destruct(): デストラクタは、特定のオブジェクトへの他の参照がなくなるとすぐにトリガーされるオブジェクト指向言語の一般的な機能です。
user_def()//オブジェクトが破棄されているかどうかを確認しますecho is_object($ obj)。 ' '?>

  • __call($ fun、$ arg): このメソッドは、未定義またはアクセスできないメソッドが呼び出されたときに呼び出されます。つまり、オブジェクトで未定義またはアクセスできないメソッドが呼び出されたときに呼び出されます。
run( 'teacher')//存在しないメソッドがオブジェクト内で呼び出されると、__ call()メソッドが自動的に呼び出されます。 $ obj-> eat( 'ashok'、 'orange')$ obj-> user_define()?>



  • __callStatic($ fun、$ arg): このメソッドは、未定義またはアクセスできないメソッドが静的に呼び出されたときに呼び出されます。
user_define()?>

  • __get($ property): このメソッドは、PHPプロパティのオーバーロードによって動的に作成されたクラスプロパティの値を取得するために使用されます。
name = $ name $ this-> reg = $ reg} public function __get($ propertyName){if($ propertyName == 'reg'){if($ this-> reg> 30){return $ this-> reg- 10} else {return $ this-> $ propertyName}} else {return $ this-> $ propertyName}}} $ obj = new Student( 'Ashok'、60)// Studentクラスでオブジェクトをインスタンス化し、初期値を割り当てますコンストラクターを使用してプロパティに移動します。エコー '名前:'。 $ obj-> name。 '' //プライベートプロパティにアクセスすると、__ get()メソッドが自動的に呼び出されるため、プロパティ値を間接的に取得できます。エコー 'reg:'。 $ obj-> reg。 '' // __get()メソッドは自動的に呼び出され、オブジェクト自体に応じて異なる値を返します。 ?>

  • __set($ property、$ value): このメソッドは、PHPプロパティのオーバーロードによって動的に作成されたクラスプロパティの値を配置するために使用されます。
name = $ name $ this-> reg = $ reg} public function __set($ property、$ value){if($ property == 'reg')$ value $ property = $ value public function fun(){echo'My名前は '。$ this-> name。'、私の登録番号は '。$ this-> reg}} $ obj = new Student(' Ashok '、40)//初期値はコードによって変更されることに注意してください未満。 $ obj-> name = 'Sushma' // 'name'プロパティは正常に割り当てられます。 __set()メソッドがない場合、プログラムは例外をスローします。 $ obj-> age = 16 // 'reg'プロパティは正常に割り当てられます。 $ obj-> reg = 160 // 160は無効な値であるため、割り当てに失敗します。 $ obj-> fun()?>

  • __isset($ content); このメソッドは、未定義またはアクセスできないメンバーに対してisset()またはempty()を呼び出すときに呼び出されます。これは、PHPのisset()関数を使用して、必要なオーバーロードされたプロパティが設定されているかどうかを確認しながら自動的に呼び出されます。
name = $ name $ this-> reg = $ reg $ this-> generic = $ gender} public function __isset($ content){echo '{$ content}プロパティはプライベートであり、__ isset()メソッドが自動的に呼び出されます。 'echo isset($ this-> $ content)}} $ obj = new Student(' Ashok '、30)//最初に割り当てられました。 echo isset($ obj-> generic)、 '' echo isset($ obj-> name)、 '' echo isset($ obj-> reg)、 ''?>

  • __unset($ content): このメソッドは、未定義またはアクセスできないメンバーに対してreset()を呼び出すときに呼び出されます。
name = $ name $ this-> reg = $ reg $ this-> generic = $ gender} public function __unset($ content){echo 'クラスの外部でunset()メソッドを使用すると自動的に呼び出されます。 'echo isset($ this-> $ content)}} $ obj = new Student(' Ashok '、30)//最初に割り当てられました。 unset($ obj-> generic)unset($ obj-> name)unset($ obj-> reg)?>

ソケットプログラミングの使用は何ですか
  • __睡眠(): このメソッドは、serialize()の実行中に最初に呼び出されます。シリアル化の前にPHPクラスオブジェクトをクリーニングすると、オブジェクトのプロパティ配列が返されます。
name = $ name $ this-> reg = $ reg $ this-> generic = $ gender} public function __sleep(){echo 'これは、serialize()メソッドがクラスの外部で呼び出されたときに呼び出されます。 '$ this-> name = base64_encode($ this-> name)return array(' name '、' reg ')//要素が返されるプロパティの名前である値を返す必要があります。 }} $ obj = new Student( 'Ashok')//最初に割り当てられます。 echo serialize($ obj)echo ''?>

  • __目を覚ます(): このメソッドは、deserialization()の実行中に呼び出されます。 deserialization()を呼び出すと、オブジェクトのプロパティとリソースを復元する作業が逆になります。
name = $ name $ this-> reg = $ reg $ this-> generic = $ gender} public function __sleep(){echo 'これは、serialize()メソッドがクラスの外部で呼び出されたときに呼び出されます。 '$ this-> name = base64_encode($ this-> name)return array(' name '、' reg ')//要素が返されるプロパティの名前である値を返す必要があります。 } public function __wakeup(){echo'unserialize()メソッドがクラスの外部で呼び出されたときに呼び出されます。 '$ this-> name = 2 $ this-> generic ='男性 '}} $ obj = new Student(' Ashok ')//最初に割り当てられます。 var_dump(serialize($ obj))var_dump(unserialize(serialize($ obj)))?>

  • __toString(): このメソッドは、echoメソッドを使用してオブジェクトを直接印刷するときに呼び出されます。 PHP印刷ステートメントでクラスインスタンスを使用している間は、文字列値を返すことが期待されています。
name = $ name $ this-> reg = $ reg $ this-> generic = $ gender} public function __toString(){return'go go go '}} $ obj = new Student(' Ashok ')//最初に割り当てられます。エコー$ obj?>

  • __invoke(): このメソッドは、関数を呼び出す方法でオブジェクトを呼び出そうとしているときに呼び出されるクラスで定義されます。
name = $ name $ this-> reg = $ reg $ this-> generic = $ gender} public function __invoke(){echo 'これはオブジェクトです'}} $ obj = new Student( 'Ashok')//最初に割り当てられた。 $ obj()?>

  • __set_state($ array): このメソッドは、var_export()の呼び出し中に呼び出されます。これは、オブジェクトのプロパティ配列をエクスポートするときに呼び出される静的メソッドであり、その引数としてそのような配列変数を期待します。
name = $ name $ this-> reg = $ reg $ this-> generic = $ gender}} $ obj = new Student( 'Ashok')//最初に割り当てられます。 var_export($ obj)?>

  • __クローン(): このメソッドは、オブジェクトがコピーされるときに呼び出されます。
name = $ name $ this-> reg = $ reg $ this-> generic = $ gender} public function __clone(){echo__METHOD__。 'オブジェクトのクローンを作成しています。 '}} $ obj = new Student(' Ashok ')//最初に割り当てられます。 $ obj2 = clone $ obj var_dump( 'object1:')var_dump($ obj)echo '' var_dump( 'object2:')var_dump($ obj2)?>

  • __デバッグ情報(): このメソッドは、表示する必要のあるプロパティを取得するためにオブジェクトをダンプしているときにvar_dump()によって呼び出されます。メソッドがオブジェクトに定義されていない場合は、すべてのパブリック、プロテクト、およびプライベートプロパティが表示されます。
prop = $ val} public function __debugInfo(){return ['propSquared' => $ this-> prop ** 2、]}} var_dump(new Sample(22))?>

これで、PHPの記事でこの魔法のメソッドの終わりに到達しました。 PHPのさまざまな魔法の方法について理解していただければ幸いです。

チェックしてください 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。

整数のJavaのべき級数

質問がありますか? 」のコメントセクションでそれについて言及してください の魔法の方法 PHP 」と私はあなたに戻ります。