1. __get/__set: オブジェクトの属性を引き継ぐ
2. __call/__callStatic: PHP オブジェクト メソッドの使用を制御します
3. __toString: PHP オブジェクトを文字列
に変換します
4. __invoke: php オブジェクトを関数として実行するときにこのメソッドを呼び出します
<code>class Object { protected $array = array(); function __set($key,$value) { var_dump(__METHOD__); $this->array[$key] = $value; } function __get($key) { var_dump(__METHOD__); return $this->array[$key]; } function __call($func,$param) { var_dump($func,$param); return magic mathod __call; } static function __callStatic($func,$param) { var_dump($func,$param); return magic mathod __callStatic; } function __toString() { return __toString; } function __invoke($param) { var_dump($param); return invoke; } } </code>
$Obj = 新しいオブジェクト();
$Obj->title = "Hello";//存在しないオブジェクトに値を代入すると、自動的に __set メソッドが呼び出されます
echo $Obj->title;//オブジェクトに存在しない属性を読み取る場合、自動的に __get メソッドを呼び出します
echo $Obj->test("hello","123"); //オブジェクトに存在しないメソッドを呼び出すと、__call メソッドが自動的に呼び出されます
echo $Obj::test1("hello1","1234"); //オブジェクトに存在しない静的メソッドを呼び出すと、__callStatic メソッドが自動的に呼び出されます
echo $Obj;// オブジェクトが直接出力される場合 (オブジェクトを直接出力できないため)、__toString メソッドが自動的に呼び出され、オブジェクトを文字列に変換します
echo $Obj(“hello”);//オブジェクトが関数として使用される場合、__invoke メソッドが自動的に呼び出されます