1、__get/__set:對對象屬性的接管
2、__call/__callStatic:控制php對象方法的使用
3、__toString:將php對象轉換成字符串
4、__invoke:將一個php對象當成函數來執行時來回調這個方法
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;
}
}
$Obj = new Object();
$Obj->title = “你好”;//當對一個對象不存在的屬性賦值的時候,它就會自動調用__set方法
echo $Obj->title;//對去讀取一個對象不存在的屬性的時候,它就會自動調用__get方法
echo $Obj->test(“hello”,”123”); //當調用一個對象不存在的方法時,就會自動調用__call方法
echo $Obj::test1(“hello1”,”1234”); //當調用一個對象不存在的靜態方法時,就會自動調用__callStatic方法
echo $Obj;//當直接輸出一個對象時(因為對象不能直接輸出),就會自動調用__toString方法把對象轉換成字符串
echo $Obj(“hello”);//當將一個對象當成一個函數來使用的時候,就會自動調用__invoke方法