位置: 编程技术 - 正文

浅谈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下载)

  • 实收资本印花税按次还是按年
  • 什么时候要计提坏账准备
  • 印花税的填报方法
  • 企业出售不动产的涉税问题
  • 需要冲红的普通发票无法收回怎么办
  • 产成品入库金额和售价一样嘛
  • 建筑劳务公司的工资计入什么科目
  • 固定资产后续支出的确认和处理
  • 现金日记账的登记依据有
  • 小规模纳税人不允许开具零税率发票
  • 医疗器械销售初次拜访话术
  • 培训发票可以抵进项税吗
  • 办税员身份怎么办理
  • 最新房产税消息2020
  • 金税四期上线了吗?
  • 我们公司春节发工资英文
  • 计提印花税怎么做凭证
  • 版权使用费属于什么税目
  • 进项和销项单价的比例
  • 怎么查以前申报的财务报表
  • 长期待摊费用与折旧区别
  • 住宿服务可以开免税吗
  • 代发保险款收入
  • 事业单位坏账准备的计提方法
  • win11时间不对
  • gdb调试工具的使用
  • 系统之家一键重装系统步骤
  • 企业收到的
  • php 魔术
  • 会计账簿登记错误怎么办
  • 销售货物代垫的运费会计分录
  • La Selva生物站热带雨林树冠上的黑嘴巨嘴鸟,哥斯达黎加 (© Greg Basco/Minden Pictures)
  • 公司账户的钱怎么少了
  • 非流动资产增加说明什么原因
  • 票据贴现税务处理
  • 税金及附加和营业收入有关系吗
  • ajaxuploadfile
  • 前端高手
  • 从零开始文章
  • vue缓存路由组件相关的两个生命周期函数是
  • yolo算法百度百科
  • php时间代码
  • 最新预提房租会计分录
  • 企业微信支付年限怎么看
  • 跟郑老师学会计建筑业账务处理
  • 旅游公司差额征税税率是5%
  • 民办非企业性质还是商业性质吗
  • 1000左右打印机
  • js中的对象种类有哪些
  • db2原理
  • 个人所得税表格怎么做
  • 企业存货按照经济内容可以分为
  • 填写备案信息的目的
  • 企业之间交换房地产要交土地增值税吗
  • 消费税会计分录处理
  • 收到工会经费怎么指定现金流入
  • 专票先不认证如何申报增值税
  • 新医院会计制度什么时候实施
  • 办理分公司的流程样本
  • SQL Server 2000 清理日志精品图文教程
  • linux内核模块编译步骤
  • 系统安装驱动卡住了
  • winxp系统用户不见了
  • windows 10的应用商店中的应用
  • Ghost XP SP3 YN8.0装机版 (雨林木风)
  • linux find命令详解xargs
  • win7的记事本在哪里打开
  • linux自动清理磁盘空间
  • 编写注册表文件
  • javascript数学函数
  • python urljoin
  • js闭包作用问题解决应用
  • android设置无标题
  • javascript基础
  • jquery详解
  • jquery下拉列表
  • jquery插件库怎么导入
  • jQuery UI结合Ajax创建可定制的Web界面
  • python 管理系统
  • 发票纳税人识别号错了能报销吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设