定義:
PHP類中以兩個下畫線“__”開頭的方法被稱為魔術方法。
分類:
例如:構造方法:__construct;析構方法:__destruct;動態重載:__set()、__get()、__call()、__callStatic();對象的克隆:__clone()
應用場景:
1、當程序試圖修改一個不存在或不可見的類屬性時,PHP引擎將會調用__set()方法,當然前提是該方法在類中被定義。__set()的定義格式如下:
function __set($name,$value){
//實現細節
}
其中,$name是動態創建的變量名,$value是該變量的值。
2、當程序試圖讀取一個不存在或不可見的類屬性時,PHP引擎將會調用__get()方法,當然前提是該方法在類中被定義。__get()的定義格式如下:
function __get($name){
//實現細節
}
其中,$name是動態創建的變量名。
3、當程序試圖調用一個不存在或不可見的類方法時,PHP引擎將會調用__call()方法,當然前提是該方法在類中被定義。__call()方法的定義格式如下:
function __call($name,$args){
//實現細節
}
其中,$name是動態創建的方法名,$args是該方法的參數,以數組的形式存在。
4、從PHP5.3.0開始,可以使用__callStatic()動態創建靜態方法。__callStatic()的定義格式如下:
function __callStatic($name,$args){
//實現細節
}
其中,$name是動態創建的方法名,$args是該方法的參數,以數組的形式存在。
5、__clone()方法一旦被定義,類在被復制時就會自動調用它,這樣我們就可以在__clone()方法中給引用屬性重新開辟內存。__clone()定義格式如下:
function __clone(){
//實現細節
}