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

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

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