反射在容器中有著你不看源碼根本了解不到的重要性,一定要好好看看本文
四、必會(huì)反射機(jī)制
不知道大家有沒有了解過GO的反射機(jī)制,咔咔在當(dāng)時(shí)看了go的反射機(jī)制后說(shuō)實(shí)話有點(diǎn)暈乎乎的。
但是在后來(lái)看了PHP的反射之后,不僅對(duì)go的反射有了一定的深入了解,并且對(duì)于PHP的反射也是更好的理解。
反射這一概念是在PHP5.0被引出來(lái)的,在目前使用的框架中咔咔知道的就有thinkphp和laravel都使用了反射來(lái)實(shí)現(xiàn)依賴注入。
對(duì)于反射的理解:其實(shí)就是從根獲取根以外的東西,放在編程中講就是只要知道一個(gè)類就可以知道這個(gè)類所有的屬性和方法。
案例
這只是一個(gè)簡(jiǎn)單的實(shí)現(xiàn)案例,獲取類的全部方法和屬性。可以看下圖中的打印結(jié)果跟TestReflection是否一致。
這個(gè)也從側(cè)面表現(xiàn)出現(xiàn)一個(gè)問題,就是會(huì)暴露出來(lái)一些本不應(yīng)該暴露出來(lái)的信息。
關(guān)于反射提供的接口還有很多,這里就介紹幾個(gè)常用的,其余的在框架源碼中解析。
使用反射執(zhí)行一個(gè)類的方法
打印出來(lái)的結(jié)果就是咔咔
使用反射執(zhí)行一個(gè)類中帶參數(shù)的方法

使用反射執(zhí)行一個(gè)類中不帶參數(shù)的方法
其它的方法你們自己可以嘗試嘗試,因?yàn)檫@個(gè)反射的接口在平時(shí)基礎(chǔ)開發(fā)是不怎么用的,這咔咔給大家介紹的都是后邊在閱讀源碼都是可以用的到的。
既然了解到了反射,那么反射可以做什么事情呢!其中有一個(gè)功能點(diǎn)自動(dòng)生成文檔。
反射到這里就簡(jiǎn)單的了解一下,至于還想了解