php中的類魔術(shù)方法有:1、__sleep,返回一個包含對象中所有應(yīng)被序列化的變量名稱的數(shù)組;2、__tostring,返回一個類被當(dāng)作字符串時要輸出的內(nèi)容;3、__construct,構(gòu)造方法;4、__destruct,析構(gòu)方法。
成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的忻府網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
在PHP中將所有以雙下劃線(__)開頭的類方法保留為魔術(shù)方法。
(推薦教程:php圖文教程)
下面我們來看看都有哪些魔術(shù)方法:
1、__sleep:返回一個包含對象中所有應(yīng)被序列化的變量名稱的數(shù)組。
serialize函數(shù)在序列化類時首先會檢查類中是否存在__sleep方法。如果存在,會先調(diào)用此方法然后再執(zhí)行序列化操作,并且只對__sleep返回的數(shù)組中的屬性進(jìn)行序列化。如果__sleep不返回任何內(nèi)容,則null會被序列化,并產(chǎn)生E_NOTICE級別的錯誤。
__sleep不能返回父類的私有成員,否則會產(chǎn)生E_NOTICE級別的錯誤。對于一些很大但不需要保存全部數(shù)據(jù)的對象此方法很有用。
2、__wakeup:與__sleep相反,是在unserialize函數(shù)反序列化時首先會檢查類中是否存在__wakeup方法,如果存在會先調(diào)用次方法然后再執(zhí)行反序列化操作。用于在反序列化之前準(zhǔn)備一些對象需要的資源,或其他初始化操作。
3、__tostring:返回一個類被當(dāng)做字符串時要輸出的內(nèi)容,此方法必須返回字符串并且不能在此方法中拋出異常,否則會產(chǎn)生致命錯誤。
在PHP5.2之前此方法只有在直接使用echo和print時才生效,之后則可以在任何字符串環(huán)境生效,如果將一個未定義__toString方法的對象轉(zhuǎn)換為字符串,會產(chǎn)生致命錯誤。
(視頻教程推薦:php視頻教程)
4、__invoke:PHP5.3起,當(dāng)嘗試以函數(shù)的方式調(diào)用對象時,會調(diào)用此方法。
5、__set_state:PHP5.1起,當(dāng)調(diào)用var_export函數(shù)導(dǎo)出類時,會調(diào)用此靜態(tài)方法。此方法只有一個參數(shù),是一個包含按屬性為鍵,屬性值為值的數(shù)組。此方法可以用來控制哪些成員可以被導(dǎo)出。
6、__debugInfo:PHP5.6起,當(dāng)調(diào)用var_dump函數(shù)打印對象的屬性時會調(diào)用此方法,此方法可以用來控制哪些屬性可以被打印,如果沒有定義此方法,則對象中所有的public、protected、private的屬性都會被打印。返回一個包含可以被打印的屬性的數(shù)組。
7、__construct:構(gòu)造函數(shù)。
8、__destruct:析構(gòu)函數(shù)。
9、__set、__get、__isset、__unset:重載屬性。
10、__call、__callstatic:重載方法。
11、__clone:對象復(fù)制。
當(dāng)前標(biāo)題:php中的類魔術(shù)方法有哪些
文章源于:http://weahome.cn/article/cgjjgi.html