魔術方法
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等方法在 PHP 中被稱爲"魔術方法"(Magic methods)。在命名自己的類方法時不能使用這些方法名,除非是想使用其魔術功能。
1. __construce()
允行開發者在一個類中定義一個方法作爲構造函數。具有構造函數的類會在每次創建新對象時先調用此方法,所以非常適合在使用對象之前做一些初始化工作。
2. __destruct()
PHP 5 引入了析構函數的概念,這類似於其它面向對象的語言,如 C++。析構函數會在到某個對象的所有引用都被刪除或者當對象被顯式銷燬時執行。
3. __call()
在對象中調用一個不可訪問方法時,__call() 會被調用。
在對象中調用一個靜態不可訪問方法時,__call() 會被調用。
5. __get()
讀取不可訪問屬性的值時,__get() 會被調用
6. _set()
在給不可訪問屬性賦值時,__set() 會被調用
7. __isset()
當對不可訪問屬性調用 isset() 或 empty() 時,__isset() 會被調用。
8. __unset()
當對不可訪問屬性調用 unset() 時,__unset() 會被調用。
9. __sleep()
serialize() 函數會檢查類中是否存在一個魔術方法 __sleep()。如果存在,該方法會先被調用,然後才執行序列化操作。此功能可以用於清理對象,並返回一個包含對象中所有應被序列化的變量名稱的數組
10. __wakeup()
unserialize() 會檢查是否存在一個 __wakeup() 方法。如果存在,則會先調用 __wakeup 方法,預先準備對象需要的資源.
11. __toString()
__toString() 方法用於一個類被當成字符串時應怎樣迴應。
12. __invoke()
當嘗試以調用函數的方式調用一個對象時,__invoke() 方法會被自動調用。
13. __set_state()
當調用 var_export() 導出類時,此靜態 方法會被調用。
14. __clone()
當複製完成時,如果定義了 __clone() 方法,則新創建的對象(複製生成的對象)中的 __clone() 方法會被調用,可用於修改屬性的值(如果有必要的話)。
15 __debugInfo()