PHP 魔術方法
介紹
PHP 中的魔術方法是一些特殊的用於執行特定任務的方法。這些方法名稱以雙下劃線(__)作為字首。所有這些函式名都是保留字,不能用於與關聯的魔術功能無關的任何其他目的。類中的魔術方法必須宣告為 public。這些方法充當攔截器,在滿足特定條件時會自動呼叫。
PHP 目前提供以下魔術方法:
__sleep
public __sleep ( void ) : array
類中的 serialize() 方法檢查它是否具有名為 __sleep() 的函式。如果有,則在任何序列化之前執行該函式。它應該返回一個數組,其中包含應序列化的該物件的所有變數的名稱。
__wakeup
public __wakeup ( void ) : void
unserialize() 方法檢查是否存在一個名為 __wakeup() 的魔術函式。如果存在,則此函式可以重建物件可能擁有的任何資源。
__serialize
public __serialize ( void ) : array
serialize() 方法還會檢查類是否具有 __serialize() 方法。如果有,則在任何序列化之前執行它。它必須構造並返回一個鍵值對的關聯陣列,這些鍵值對錶示物件的序列化形式。
__unserialize
public __unserialize ( array $data ) : void
unserialize() 也檢查 __unserialize() 是否存在,並且它將接收從 __serialize() 返回的已還原陣列。然後,它可以根據需要從該陣列中恢復物件的屬性。
__toString
public __toString ( void ) : string
__toString() 方法描述物件的字串表示形式。例如,echo $obj; 將列印什麼。此方法必須返回一個字串。
__invoke
__invoke ([ $... ] ) : mixed
當指令碼嘗試將物件作為函式呼叫時,將呼叫此方法。
__set_state
static __set_state ( array $properties ) : object
此靜態方法用於由 var_export() 匯出的類。它接收一個引數,該引數是一個數組,其中包含以陣列('property' => value, ...) 形式匯出的屬性。
__debugInfo
__debugInfo ( void ) : array
當執行 var_dump() 以轉儲物件以獲取應顯示的屬性時,會自動呼叫此方法。如果未定義,則將顯示所有 public、protected 和 private 屬性。
__set
public __set ( string $name , mixed $value ) : void
當寫入不可訪問(受保護的或私有的)或不存在的屬性的資料時,將執行 __set()。
__get
public __get ( string $name ) : mixed
__get() 用於從不可訪問(受保護的或私有的)或不存在的屬性讀取資料。
__isset
public __isset ( string $name ) : bool
呼叫不可訪問(受保護的或私有的)或不存在的屬性上的 isset() 或 empty() 時,將觸發 __isset()。
__unset
public __unset ( string $name ) : void
當對不可訪問(受保護的或私有的)或不存在的屬性使用 unset() 時,將呼叫 __unset()。