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

更新於:2020年9月18日

9000+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告