標籤:tostring 使用 als 刪除 開頭 auto 命名方式 獨立 對象
__construct() 建構函式
__destruct() 解構函式
__sleep() serialize序列化時調用
__wakeup() unserialize還原序列化時調用
__clone() 檢測複製對象
屬性重載的魔術方法:
set,get,sset,unset
__set() 當為不可訪問的屬性賦值時,會被自動調用 會得到兩個參數,當前操作的屬性名稱和屬性值!
典型的,__set作用,用於嚴格控制對象結構,和批處理可以被修改的屬性!
__get()
當訪問不可訪問的屬性時,會被自動調用
需要的參數是:一個,為當前操作的屬性名稱
__unset()
在刪除一個不可訪問的屬性時,可以自動被調用!
需要一個參數 當前操作的屬性名稱。
此時就可以利用商務邏輯完成 屬性的刪除處理!
__isset()
在判斷一個不可訪問的屬性是否存在時,被自動調用
需要一個參數,屬性名稱
注意,此函數需要返回true,或者false,表示屬性是否存在:
方法重載的魔術方法:
__call()
當訪問一個不可訪問的對象方法時,會觸發當前的魔術方法!
需要的參數:
2個參數,第一是當前的方法名,第二是調用時使用的實參列表!
典型的作用,
第一, 給出友好的提示
第二, 執行預設操作!
static __callStatic()
與 __call類似,當靜態調用一個不可訪問的方法時,會自動執行!
魔術方法,magic method
在特定的情況下,會被自動調用的方法,通常負責完成某塊獨立的功能的方法稱之為魔術方法!
特點:
1,需要使用者指令碼定義,不定義不執行!
2,命名方式都是以__開頭!
總結:
__construct
__destruct
__sleep
__wakeup
__set
__get
__isset
__unset
__clone
__call
__callStatic
__autoload()//魔術函數
__invoke()
將一個對象,當作函數調用時,會觸發該對象的__invoke()方法,由此方法,就可以調用,沒有該方法就不能調用!
回想匿名函數
為什麼,匿名函數對象(Closure類對象)可以,但是普通類對象不行?
PHP內建Closure類中有__invoke()方法:__invoke是 php實現匿名函數 不可或缺的部分!
__toString()
轉換到字串的意思!
當將對象當作字串使用時,會自動調用該對象的魔術方法!
PHP物件導向 –魔術方法