今天在码代码的时候发现一个问题,在获取一个类的实例的时候发现在构造函数中存在参数依赖,导致不能直接实例化该类.通过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 关注
- 841 浏览
添加回答
举报
0/150
提交
取消