魔術方法(部分)
PHP 將所有以 __(兩個下劃線)開頭的類方法保留為魔術方法
之前的構造函數與析構函數也都是魔術方法
__set():
當對類中的不能直接訪問的屬性賦值時,該方法被自動調用
__set不需要返回值
格式: Function __get($name,$value) {}
__get():
在類的外部調用不能直接訪問的屬性時,該函數方法被自動調用
魔術方法必須是公共的,且不能定義為靜態的
被訪問的屬性的名稱,它必須是一個字符串
__get必須有返回值,所以最後結束的肯定是return語句
格式: Function __get($name) {}
__isset():
判斷類中的屬性是否被設置了
當對不可訪問屬性調用 isset() 或 empty() 時,__isset()會被調用。
傳入的是類的屬性名稱
如果屬性存在,則返回屬性的值,如果不存在,返回null
格式: Function __isset($name) {}
__unset():
銷毀指定的變量
格式: Function __unset($name) {}
__call():
在對象中調用一個不能直接訪問的非靜態方法時,__call()被自動調用
$name 被訪問的函數方法的名稱,字符串格式
$arguments 傳遞過來的函數方法的參數,數組格式
格式: Function __call($name,$arguments) {
if(method_exists($this,$name))
{
call_user_func_array(array($this,$name),$arguments);
}
else
{
echo ‘沒有對應的函數可以被調用‘;
}
}
__toString():
當以字符串格式輸出類的對象時,默認被自動調用
該函數方法結束必須有一個return語句,且返回的值必須是字符串
格式: Function __toString() {}
__clone():
當類的對象被克隆時自動調用執行
魔術方法(部分)