您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關php中類魔術方法是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
php中的類魔術方法有:1、__sleep,返回一個包含對象中所有應被序列化的變量名稱的數組;2、__tostring,返回一個類被當作字符串時要輸出的內容;3、__construct,構造方法;4、__destruct,析構方法。
在PHP中將所有以雙下劃線(__)開頭的類方法保留為魔術方法。
下面我們來看看都有哪些魔術方法:
1、__sleep:返回一個包含對象中所有應被序列化的變量名稱的數組。
serialize函數在序列化類時首先會檢查類中是否存在__sleep方法。如果存在,會先調用此方法然后再執行序列化操作,并且只對__sleep返回的數組中的屬性進行序列化。如果__sleep不返回任何內容,則null會被序列化,并產生E_NOTICE級別的錯誤。
__sleep不能返回父類的私有成員,否則會產生E_NOTICE級別的錯誤。對于一些很大但不需要保存全部數據的對象此方法很有用。
2、__wakeup:與__sleep相反,是在unserialize函數反序列化時首先會檢查類中是否存在__wakeup方法,如果存在會先調用次方法然后再執行反序列化操作。用于在反序列化之前準備一些對象需要的資源,或其他初始化操作。
3、__tostring:返回一個類被當做字符串時要輸出的內容,此方法必須返回字符串并且不能在此方法中拋出異常,否則會產生致命錯誤。
在PHP5.2之前此方法只有在直接使用echo和print時才生效,之后則可以在任何字符串環境生效,如果將一個未定義__toString方法的對象轉換為字符串,會產生致命錯誤。
(視頻教程推薦:php視頻教程)
4、__invoke:PHP5.3起,當嘗試以函數的方式調用對象時,會調用此方法。
5、__set_state:PHP5.1起,當調用var_export函數導出類時,會調用此靜態方法。此方法只有一個參數,是一個包含按屬性為鍵,屬性值為值的數組。此方法可以用來控制哪些成員可以被導出。
6、__debugInfo:PHP5.6起,當調用var_dump函數打印對象的屬性時會調用此方法,此方法可以用來控制哪些屬性可以被打印,如果沒有定義此方法,則對象中所有的public、protected、private的屬性都會被打印。返回一個包含可以被打印的屬性的數組。
7、__construct:構造函數。
8、__destruct:析構函數。
9、__set、__get、__isset、__unset:重載屬性。
10、__call、__callstatic:重載方法。
11、__clone:對象復制。
感謝各位的閱讀!關于php中類魔術方法是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。