反射在容器中有著你不看源碼根本了解不到的重要性,一定要好好看看本文
不知道大家有沒有了解過GO的反射機制,咔咔在當時看了go的反射機制後說實話有點暈乎乎的。
但在後來看了PHP的反射之後,不僅對go的反射有了一定的深入了解,對於PHP的反射也是更好的理解。
反射這個概念是在PHP5.0被引出來的,在目前使用的框架中咔咔知道的就有thinkphp和laravel都使用了反射來實現依賴注入。
對於反射的理解:其實就是從根獲取根以外的東西,放在程式設計中講就是只要知道一個類別就可以知道這個類別所有的屬性和方法。
案例
這只是一個簡單的實作案例,取得類別的全部方法和屬性。可以看下圖中的列印結果跟TestReflection是否一致。
這個也從側面表現出現一個問題,就是會暴露出來一些不應該暴露出來的資訊。
關於反射提供的介面還有很多,這裡就介紹幾個常用的,其餘的在框架原始碼中解析。
使用反射執行一個類別的方法
列印出來的結果就是咔咔咔
##使用反射執行一個類別中帶參數的方法
使用反射執行一個類別中不帶參數的方法
它的方法你們自己可以嘗試嘗試,因為這個反射的介面在平時基礎開發是不怎麼用的,這咔咔咔給大家介紹的都是後邊在閱讀源碼都是可以用的到的。
既然了解到了反射,那麼反射可以做什麼!其中有一個功能點自動產生文件。 反射到這裡就簡單的了解一下,至於還想了解更多的介面使用可以去官方查看對應的介面資訊。在了解反射之後就要開始進入正題了,就需要正式進入我們的容器環節了。只有上邊的基礎打好接下來的容器才能更好的理解。
堅持學習、堅持寫博、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大互聯網中咔咔的文章能帶給你一絲絲幫助。我是喀喀,下期見。
以上是ThinkPHP容器之反射機制的詳細內容。更多資訊請關注PHP中文網其他相關文章!