PHP的十六個魔術方法
PHP中把以兩個下劃線__開頭的方法稱為魔術方法(Magic methods),這些方法在PHP中充當了舉足輕重的作用。
魔術方法是一種特殊的方法,當對對象執(zhí)行某些操作時會覆蓋 PHP 的默認操作。
注意:
PHP 保留所有以 __ 開頭的方法名稱。 因此,除非覆蓋 PHP 的行為,否則不建議使用此類方法名稱。
下列方法名被認為是魔術方法:
__construct() 、 __destruct() 、 __call() 、 __callStatic() 、 __get() 、 __set() 、 __isset() 、 __unset() 、 __sleep() 、 __wakeup() 、 __serialize() 、 __unserialize() 、 __toString() 、 __invoke() 、 __set_state() 、 __clone() 、 __debugInfo() 。
注意:
除了 __construct(), __destruct() ,和 __clone() 之外的所有魔術方法都 必須 聲明為 public, 否則會發(fā)出 E_WARNING。
在 PHP 8.0.0 之前沒有為魔術方法 __sleep() 、 __wakeup() 、 __serialize() 、 __unserialize() 、 __set_state() 發(fā)出診斷信息。
注意:
如果定義魔術方法時使用類型聲明,它們必須與本文檔中描述的簽名相同,否則會發(fā)出致命錯誤。 在 PHP 8.0.0 之前,不會發(fā)出診斷信息。 然而, __construct() 和 __destruct() 不能聲明返回類型, 否則會發(fā)出致命錯誤。
魔術方法包括:
1. __construct(),類的構造函數(shù)
2. __destruct(),類的析構函數(shù)
3. __call(),在對象中調用一個不可訪問方法時調用
4. __callStatic(),用靜態(tài)方式中調用一個不可訪問方法時調用
5. __get(),獲得一個類的成員變量時調用
6. __set(),設置一個類的成員變量時調用
7. __isset(),當對不可訪問屬性調用isset()或empty()時調用
8. __unset(),當對不可訪問屬性調用unset()時被調用。
9. __sleep(),執(zhí)行serialize()時,先會調用這個函數(shù)
10. __wakeup(),執(zhí)行unserialize()時,先會調用這個函數(shù)
11. __toString(),類被當成字符串時的回應方法
12. __invoke(),調用函數(shù)的方式調用一個對象時的回應方法
13. __set_state(),調用var_export()導出類時,此靜態(tài)方法會被調用。
14. __clone(),當對象復制完成時調用
15. __autoload(),嘗試加載未定義的類
16. __debugInfo(),打印所需調試信息
原文鏈接:https://www.dianjilingqu.com/441165.html