位置: 编程技术 - 正文

浅谈PHP的反射机制(php 反射)

编辑:rootadmin

推荐整理分享浅谈PHP的反射机制(php 反射),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php反射机制与应用,php反射获取方法参数,php 反射,浅谈php的反射机制,php 反射的优缺点,浅谈php的反射机设计,浅谈php的反射机设计,浅谈php的反射机制,内容如对您有帮助,希望把文章链接给更多的朋友!

1. 介绍

-- PHP5添加了一项新的功能:Reflection。这个功能使得phper可以reverse-engineer class, interface,function,method and extension。通过PHP代码,就可以得到某object的所有信息,并且可以和它交互。

-- 反射是什么?

它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。这种动态获取的信息以及动态调用对象的方法的功能称为反射API。反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复杂,可扩展的应用。

其用途如:自动加载插件,自动生成文档,甚至可用来扩充PHP语言。

php反射api由若干类组成,可帮助我们用来访问程序的元数据或者同相关的注释交互。借助反射我们可以获取诸如类实现了那些方法,创建一个类的实例(不同于用new创建),调用一个方法(也不同于常规调用),传递参数,动态调用类的静态方法。

反射api是php内建的oop技术扩展,包括一些类,异常和接口,综合使用他们可用来帮助我们分析其它类,接口,方法,属性,方法和扩展。这些oop扩展被称为反射。

通过ReflectionClass,我们可以得到Person类的以下信息:

1)常量 Contants

2)属性 Property Names

3)方法 Method Names静态

4)属性 Static Properties

5)命名空间 Namespace

6)Person类是否为final或者abstract

浅谈PHP的反射机制(php 反射)

2. 具体例子

创建一个Person类,然后使用ReflectionClass反射它

2.1)【创建Persion类】

2.2)【反射过程】

接下来反射它,只要把类名"Person"传递给ReflectionClass就可以了:

2.3)【反射后使用】

2.3.1)获取属性(Properties)

默认情况下,ReflectionClass会获取到所有的属性,private 和 protected的也可以。如果只想获取到private属性,就要额外传个参数:

privateproperties=privateproperties=class->getProperties(ReflectionProperty::IS_PRIVATE);

可用参数列表:

ReflectionProperty::IS_STATIC ReflectionProperty::IS_PUBLIC ReflectionProperty::IS_PROTECTED ReflectionProperty::IS_PRIVATE

如果要同时获取public 和private 属性,就这样写:ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED。

通过$property->getName()可以得到属性名。

2.3.2)【获取注释】

通过getDocComment可以得到写给property的注释。

2.3.3)【获取类的方法】

获取方法(methods):通过getMethods() 来获取到类的所有methods。

2.3.4)【执行类的方法】

标签: php 反射

本文链接地址:https://www.jiuchutong.com/biancheng/275006.html 转载请保留说明!

上一篇:PHP数组的定义、初始化和数组元素的显示实现代码(php数组有哪几种类型)

下一篇:Centos 6.5系统下编译安装PHP 7.0.13的方法(centos6.5下载)

  • 税收缴款书现在还有吗
  • 坏账准备需要计提成本吗
  • 人工费用的核算例题
  • 公司注销单位社保欠费怎么处理
  • 银行结息收入怎么做分录
  • 房改房增值税
  • 延迟取得发票的原因
  • 工资发多了需要退回吗
  • 房地产企业的土地使用税起始时间
  • 企业年会的增值税能抵扣吗?
  • 安徽附加税优惠政策
  • 稿酬所得个人所得税计算方法
  • 增值税发票查验平台显示查无此票
  • 未开票的销售要交增值税吗
  • 应收代位偿款
  • 车间发生的购买办公用品支出应计入什么账户
  • 软件企业研发费用占比要求
  • 增值税专用发票的税率是多少啊
  • 怎样取得个人所得税
  • 潽金融资租赁有限公司
  • 应付职工薪酬年底怎么结转
  • PHP:oci_field_type_raw()的用法_Oracle函数
  • wordpress用什么语言开发
  • 补发工资怎么做账
  • 受托加工要交消费税吗
  • pytorch f
  • 利息收入发票能抵扣吗
  • php生成压缩包
  • 股东以固定资产入股需要交税吗
  • Http协议之Content-Type理解
  • 推荐几个比较好用的
  • 将本月发生的制造费用总额按生产工人
  • 公司的基本户怎么换
  • Mysql数据库查询客户端
  • mysql服务开不起来
  • mongodb 全文索引
  • 帝国cms如何使用
  • 餐饮发票数量单价都填0可以用吗
  • 福利费用使用范围
  • 新会计准则应付账款
  • 环境检测费可以计入环保费吗
  • 收据不能入账如何处理
  • 农民专业合作社属于什么经济类型
  • 开具信用证的费用能开专票吗
  • 土地拍卖相关法律法规
  • 进出口总额用什么字母表示
  • 政府补贴是否交增值税
  • 抵扣联和发票联的区别
  • 苗木补偿款
  • 开始建账需要哪些数据
  • WinXP系统能上qq但打不开网页原因分析及解决方法
  • debian10配置ipv6地址
  • 重装系统重启后怎么操作
  • 如何用u盘在车上放音乐
  • win8有几种版本
  • apache是什么文件
  • ubuntu touch怎么刷入
  • mac迁移助理是什么意思啊
  • 批处理在windows中的典型应用
  • mac新版系统
  • 查看linux的命令
  • shell下同时读取多个文件的方法
  • win10正式版激活码
  • win11系统ie浏览器
  • android开发流程
  • unity做app开发
  • node一次执行多个文件
  • vuejs环境搭建
  • 离线安装驱动
  • angular卸载
  • 置顶什么意思啊
  • Intent传List、Map
  • python最优化
  • 个税更正申报如何导出大厅申报表
  • 网上怎么交车船税
  • 企业税务代码是什么号
  • 企业所得税季度申报表填报说明
  • 租了店面
  • 信托公司抵押房能买吗
  • 水厂管理经验
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设