1. __construct 具有構造函數的類會在每次創建新對象時先調用此方法;初始化工作執行。
2. __desstruct 對象的所有引用都被刪除或者當對象被顯式銷毀時執行。
3.__call()在對象中調用一個不可訪問方法時,__call() 會被調用。
4.__callStatic()在靜態上下文中調用一個不可訪問方法時,__callStatic() 會被調用。
5.__set() 在給不可訪問的屬性賦值時調用
6.__get() 讀取不可訪問的屬性值是自動調用
7.__isset() 當對不可訪問的私有屬性使用isset或empty時自動調用
8.__unset() 當對不可訪問的私有屬性使用unset時;自動調用
9.__toString()當一個類的實例對象;被當成一個字符串輸出時調用
<?php class a { private $name = 'wang san'; //設置私有屬性 public function __set($a,$val){ echo "屬性:'$a' 值: '$val' 在直接設置私有屬性值的時候,自動調用了這個__set()方法為私有屬性賦值\n"; $this->$a = $val; } //獲取私有屬性 public function __get($a){ echo "屬性:'$a' 在直接獲取私有屬性值的時候,自動調用了這個__get()方法\n"; return $this->$a; } /** 當對不可訪問屬性調用 isset() 或 empty() 時,__isset() 會被調用。*/ public function __isset($name) { echo "是否設置 '$name' 值?\n"; return isset($this->$name); } /** 當對不可訪問屬性調用 unset()會被調用。*/ public function __unset($name) { echo "銷毀私有變量 '$name' 時調動"; unset($this->$name); } /* 方法用於一個類被當成字符串時應怎樣回應 */ public function __toString() { return $this->name; } } $test = new a(); echo $test.'<br>'; // 輸出:wang san __toString()方法用於一個類被當成字符串時應怎樣回應 $test->name = "中國人"; echo $test->name; //輸出 中國人 因為使用了魔術方法 __get 和 __set var_dump(isset($test->name)); //返回 true var_dump(empty($test->name)); //返回 false unset($test->name); //銷毀時;自動調用__unset var_dump($test->name); //報錯;未定義 Undefined property: a::$name