php魔法函數(shù)性能不佳,盡量避免使用php魔法函數(shù):(主要用在:動態(tài)代理、實現(xiàn)準AOP)
1. __construct() 實例化對象時被調用,
當__construct和以類名為函數(shù)名的函數(shù)同時存在時,__construct將被調用,另一個不被調用。
作用:初始化類的成員變量
2. __destruct() 當刪除一個對象或對象操作終止時被調用。
作用:釋放對象占用的資源
3. __call(string $name, array $arguments ) 對象調用某個方法,
若方法可訪問,則直接調用;
若方法不可訪問,則會去調用__call函數(shù)。
4. __get() 讀取一個對象的屬性時, 若屬性存在,則直接返回屬性值; 若不存在,則會調用__get函數(shù)。
5. __set() 設置一個對象的屬性時, 若屬性存在,則直接賦值; 若不存在,則會調用__set函數(shù)。
6. __toString() 打印一個對象的時被調用。
如echo $obj;或print $obj;
7. __clone() 克隆對象時被調用。如:$t=new Test();$t1=clone $t;
8. __sleep() serialize之前被調用。若對象比較大,想刪減一點東東再序列化,可考慮一下此函數(shù)。
9. __wakeup() unserialize時被調用,做些對象的初始化工作。
10. __isset() 檢測一個對象的屬性是否存在時被調用。如:isset($c->name)。
11. __unset() unset一個對象的屬性時被調用。如:unset($c->name)。
12. __set_state() 類的實例被var_export時,該方法會被調用
用__set_state的返回值做為var_export的返回值。
13.__autoload() 實例化一個對象時,如果對應的類不存在,則該方法被調用。
14. __debugInfo() 類的實例被var_dump時,該方法會被調用(PHP 5.6.0才有)
15? __invoke()把類的實例當成函數(shù)一樣調用時,該方法會被調用