摘要:將所有以兩個(gè)下劃線開(kāi)頭的類方法保留為魔術(shù)方法。和當(dāng)對(duì)象被當(dāng)做使用時(shí),這個(gè)方法會(huì)被自動(dòng)調(diào)用。此方法必須返回一個(gè)字符串當(dāng)對(duì)象被當(dāng)成方法調(diào)用時(shí),這個(gè)方法會(huì)被自動(dòng)調(diào)用。參數(shù)是一個(gè)枚舉數(shù)組,包含著要傳遞給方法的參數(shù)。函數(shù)把數(shù)組元素組合為一個(gè)字符串。
PHP 將所有以 _ _(兩個(gè)下劃線)開(kāi)頭的類方法保留為魔術(shù)方法。
__toString() 和__invoke()public string __toString ( void ):當(dāng)對(duì)象被當(dāng)做string使用時(shí),這個(gè)方法會(huì)被自動(dòng)調(diào)用。此方法必須返回一個(gè)字符串
__invoke():當(dāng)對(duì)象被當(dāng)成方法調(diào)用時(shí),這個(gè)方法會(huì)被自動(dòng)調(diào)用。
__call()和__callStatic()
__call():當(dāng)對(duì)象訪問(wèn)不存在的方法名稱時(shí),__call()方法會(huì)被自動(dòng)調(diào)用
__callStatic():當(dāng)對(duì)象訪問(wèn)不存在的靜態(tài)方法名稱時(shí),__callStatic()方法會(huì)被自動(dòng)調(diào)用
通過(guò)這兩個(gè)方法,同一個(gè)方法的名稱的調(diào)用可以對(duì)應(yīng)不同的方法實(shí)現(xiàn)
run("para1","para2");//obj去調(diào)用run方法,輸出:Calling run with param: para1, para2 ?>__get()和__set()
在給不可訪問(wèn)屬性賦值時(shí),__set()會(huì)被調(diào)用
讀取不可訪問(wèn)屬性的值時(shí),__get()會(huì)被調(diào)用
className." ";//Getting the property className ?>
讀取不可訪問(wèn)屬性的值時(shí),__get()會(huì)被調(diào)用
className = "MagicClass";//Setting the property classNameto value MagicClass ?>__isset()和__unset()
當(dāng)對(duì)不可訪問(wèn)屬性調(diào)用isset()或empty()時(shí),__isset()會(huì)被調(diào)用
當(dāng)對(duì)不可訪問(wèn)屬性調(diào)用unset()時(shí),__unset()會(huì)被調(diào)用
className is set?".isset($obj->className)." ";//__isset invoked $obj->className is set?1 ?>
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/20867.html
摘要:重載在中就大量應(yīng)用了重載相關(guān)知識(shí),如在中就用到了方法重載知識(shí)使用魔術(shù)方法來(lái)動(dòng)態(tài)創(chuàng)建類中未定義或不可見(jiàn)的靜態(tài)方法。中通過(guò)引入魔術(shù)方法來(lái)實(shí)現(xiàn)動(dòng)態(tài)的創(chuàng)建類屬性和方法,包括屬性重載的魔術(shù)方法和方法重載的魔術(shù)方法。 說(shuō)明:本文主要講述PHP中重載概念,由于Laravel框架中經(jīng)常使用這塊知識(shí)點(diǎn),并且PHP的重載概念又與其他OOP語(yǔ)言如JAVA中重載概念不一樣,故復(fù)習(xí)并記錄相關(guān)知識(shí)點(diǎn)。同時(shí),作者會(huì)...
摘要:說(shuō)明本文主要學(xué)習(xí)模塊的源碼。這里,就已經(jīng)得到了鏈接器實(shí)例了,該中還裝著一個(gè),下文在其使用時(shí)再聊下其具體連接邏輯。 說(shuō)明:本文主要學(xué)習(xí)Laravel Database模塊的Query Builder源碼。實(shí)際上,Laravel通過(guò)Schema Builder來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù),通過(guò)Query Builder來(lái)CURD數(shù)據(jù)庫(kù)。Query Builder并不復(fù)雜或神秘,只是在PDO擴(kuò)展的基礎(chǔ)上又開(kāi)...
摘要:學(xué)習(xí)至今一年有余,筆記積累挺多的,也挺雜的,寫篇文章整理一下吧。基礎(chǔ)部分輸出文本的基礎(chǔ)指令和。函數(shù)內(nèi)部聲明的變量擁有作用域,只能在函數(shù)內(nèi)部進(jìn)行訪問(wèn)。布爾型要指定一個(gè)布爾值,使用關(guān)鍵字或。 php學(xué)習(xí)至今一年有余,筆記積累挺多的,也挺雜的,寫篇文章整理一下吧。 php基礎(chǔ)部分 showImg(http://segmentfault.com/img/bVcWhR); PHP 輸出文本...
摘要:類與對(duì)象基本概念如果在之后跟著的是一個(gè)包含有類名的字符串,則該類的一個(gè)實(shí)例被創(chuàng)建。如果該類屬于一個(gè)名字空間,則必須使用其完整名稱。如果一個(gè)類被聲明為,則不能被繼承。命名空間通過(guò)關(guān)鍵字來(lái)聲明。 類與對(duì)象 基本概念 new:如果在 new 之后跟著的是一個(gè)包含有類名的字符串,則該類的一個(gè)實(shí)例被創(chuàng)建。如果該類屬于一個(gè)名字空間,則必須使用其完整名稱。 Example #3 創(chuàng)建一個(gè)實(shí)例 ...
摘要:也就是閑時(shí)為了寫文章而寫的一篇關(guān)于源碼的閱讀筆記。是標(biāo)準(zhǔn)庫(kù)的縮寫,一組旨在解決標(biāo)準(zhǔn)問(wèn)題的接口和類的集合。提供了一套標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu),一組遍歷對(duì)象的迭代器,一組接口,一組標(biāo)準(zhǔn)的異常,一系列用于處理文件的類,提供了一組函數(shù),具體可以查看文檔。 也就是閑時(shí)為了寫文章而寫的一篇關(guān)于 Pimple 源碼的閱讀筆記。Pimple 代碼有兩種編碼方式,一種是以 PHP 編寫的,另一種是以 C 擴(kuò)展編寫...
閱讀 3234·2021-11-23 09:51
閱讀 1041·2021-08-05 09:58
閱讀 672·2019-08-29 16:05
閱讀 983·2019-08-28 18:17
閱讀 3038·2019-08-26 14:06
閱讀 2731·2019-08-26 12:20
閱讀 2165·2019-08-26 12:18
閱讀 3073·2019-08-26 11:56