1. 程式人生 > >魔術方法(部分)

魔術方法(部分)

沒有 必須 array 函數 erl 不存在 pan 宋體 cti

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()

當類的對象被克隆時自動調用執行

魔術方法(部分)