今天在碼代碼的時候發(fā)現(xiàn)一個問題,在獲取一個類的實例的時候發(fā)現(xiàn)在構(gòu)造函數(shù)中存在參數(shù)依賴,導(dǎo)致不能直接實例化該類.通過leader指導(dǎo)使用了reflectionClass,但是不明白其中的區(qū)別.希望有人能解答一下
$fronted_instance = new \ReflectionClass($fronted_name);
$backend_instance = new \ReflectionClass($backend_name);
2 回答

ABOUTYOU
TA貢獻1812條經(jīng)驗 獲得超5個贊
這兩者是一個個體,但又有本質(zhì)區(qū)別。
new class()是一個類對象封裝后的展現(xiàn),你不需要知道類的私有成員和方法,以及內(nèi)部作用機制,便可以直接通過類開放的成員方法和屬性來使用它。
而 new ReflectionClass()反射類則是一個類對象開封后的展現(xiàn),它將類的內(nèi)部屬性,包括公開或私有的屬性/方法,是否是靜態(tài),接口、繼承、命名空間信息,甚至注釋等全部公開,都可以通過反射api進行訪問。
由此可見反射類的強大之處。但通常使用反射在于編寫業(yè)務(wù)更為復(fù)雜的底層邏輯。而對外的功能開發(fā)還是使用實例化類封裝,也更安全便捷。
望采納。

白板的微信
TA貢獻1883條經(jīng)驗 獲得超3個贊
實例化類,以及調(diào)用該類的屬性和成員方法都是對這個類已知的情況下進行的。但是,對于一個未知的類,你不清楚類成員變量和成員方法以及各自的權(quán)限。此時就可以用通過反射機制來探知這個類的所有信息,基于此在于操作這個類。
- 2 回答
- 0 關(guān)注
- 869 瀏覽
添加回答
舉報
0/150
提交
取消