php中魔术方法的应用
魔術(shù)方法是以兩個下劃線 '__' 開頭,具有特殊作用的一些方法,可以看做 PHP 的 “語法糖”。
語法糖:指那些沒有個計算機語言添加新功能,而只是對人類來說更 “甜蜜” 的語法,語法糖往往給程序員提供了更實用的編碼方式或者一些技巧的用法,有益于更好的編碼風格,是代碼更易讀。不過其并沒有給語言添加什么新東西。PHP 里的引用、SPL 等都屬于語法糖。
PHP中的魔術(shù)方法常用的有 __set()、__get()、__call()、__callStatic()、__toString()、__construct()、__destruct()。
若在類中定義了 __set()、__get() 這一對魔術(shù)方法,那么當給對象屬性賦值或者取值時,即使這個屬性不存在,也不會報錯,一定程度上增強了程序的健壯性。
當調(diào)用一個不可訪問的方法(如未定義,或者不可見)時,__call() 會被調(diào)用。跟 __call() 方法配套的魔術(shù)方法是 __callStatic() 。當然,使用魔術(shù)方法 “ 防止調(diào)用不存在的方法而報錯 ”,并不是魔術(shù)方法的本意。實際上,魔術(shù)方法是方法的動態(tài)穿件變?yōu)榭赡?#xff0c;這在 MVC 等框架設(shè)計中是很有用的語法。假設(shè)一個控制器調(diào)用了不存在的方法,那么只要定義了 __call() 魔術(shù)方法,就能友好的處理這種情況。通常 __callStatic() 也可用于 ORM 中實現(xiàn)動態(tài)創(chuàng)建和延遲綁定。
再看另外一個魔術(shù)方法 __toString 用于打印一個對象時,看看這個對象都有哪些屬性,其值是什么,如果定義了 __toSting() 方法,就能在測試時打印出對象體,對象就會自動調(diào)用它所屬類定義的 __toString 方法,也可以自己定制,更易于理解。
為什么直接 echo 輸出一個對象就會報語法錯誤,而如果這個對象實現(xiàn) __toString() 方法后就可以直接輸出呢?原因很簡單,echo 本來就可以打印一個對象,而且也實現(xiàn)了這個借口,但是 PHP 對其做了個限制,只有實現(xiàn) __toString() 后才云訊使用,這個從 php 的源代碼里可以得到驗證,由此可見,魔術(shù)方法并不神奇。
只是在實際開發(fā)中,魔術(shù)方法就經(jīng)常用到了。
?
?
總結(jié)
以上是生活随笔為你收集整理的php中魔术方法的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Elgato Stream Deck+直
- 下一篇: 石头自清洁扫拖机器人G10S Pure: