投稿

ラベル(__callstatic)が付いた投稿を表示しています

[PHP] マジックメソッド - 未定義属性の処理

マジックメソッドとは、クラスに定義されるメソッドで、あらかじめ役割が決められたいくつかのメソッドのことを言います。 以下の記事で取り上げたコンストラクタとデストラクタについても、マジックメソッドの一種です。 https://www.s-watanabe.work/2022/12/php_11.html ここでは、未定義の属性への操作しようとしたときに呼び出されるメソッドについてまとめていきます。 __setメソッドと__getメソッド PHPは基本的に未定義の属性へのアクセスが可能になっています。例えば以下のコードはエラーにならずに実行可能です。 class Test { } $test = new Test(); $test->name = 'Hoge'; echo "name=", $test->name, "\n\n"; var_dump($test); 実行結果は以下のようになります。 $ php test_magic-method.php name=Hoge object(Test)#1 (1) { ["name"]=> string(4) "Hoge" } この属性をセットする時の処理を制御するのが __setメソッド、属性を取得する処理を制御するのが __getメソッドです。 マジックメソッドのシグネチャ __setメソッド 1. __setメソッドのシグネチャ アクセス修飾子 public or なし メソッド名 __set 第一引数 string (属性名) 第二引数 mixed (値) 戻り値 void __getメソッド 2. __getメソッドのシグネチャ アクセス修飾子 public or なし メソッド名 __get 第一引数 string (属性名) 戻り値 mix