为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 反射类和实例化类的区别

PHP 反射类和实例化类的区别

PHP
慕森王 2019-03-17 22:07:25
今天在码代码的时候发现一个问题,在获取一个类的实例的时候发现在构造函数中存在参数依赖,导致不能直接实例化该类.通过leader指导使用了reflectionClass,但是不明白其中的区别.希望有人能解答一下 $fronted_instance = new \ReflectionClass($fronted_name); $backend_instance = new \ReflectionClass($backend_name);
查看完整描述

2 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

这两者是一个个体,但又有本质区别。

new class()是一个类对象封装后的展现,你不需要知道类的私有成员和方法,以及内部作用机制,便可以直接通过类开放的成员方法和属性来使用它。

而 new ReflectionClass()反射类则是一个类对象开封后的展现,它将类的内部属性,包括公开或私有的属性/方法,是否是静态,接口、继承、命名空间信息,甚至注释等全部公开,都可以通过反射api进行访问。

由此可见反射类的强大之处。但通常使用反射在于编写业务更为复杂的底层逻辑。而对外的功能开发还是使用实例化类封装,也更安全便捷。

望采纳。

查看完整回答
1 反对 回复 2019-03-18
?
白板的微信

TA贡献1883条经验 获得超3个赞

实例化类,以及调用该类的属性和成员方法都是对这个类已知的情况下进行的。但是,对于一个未知的类,你不清楚类成员变量和成员方法以及各自的权限。此时就可以用通过反射机制来探知这个类的所有信息,基于此在于操作这个类。

查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 841 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信