位置: 编程技术 - 正文

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

  • 销售材料的会计分录在实务第几章节
  • 缴纳以前年度所得税怎么做分录
  • 现金流量表中的销售商品提供劳务收到的现金
  • 长期投资包括哪些会计科目
  • 收到办公用品的普票怎么入账
  • 实收资本未认缴资本还用填写吗
  • 小微企业分公司 企业所得税优惠
  • 营业外收入做多了怎么办
  • 房租发票9%还是5%
  • 某企业2016年年末经营资产总额为4000万元
  • 购货折让
  • 在建工程摊销是啥意思
  • 包销和代销哪个风险大
  • 个体工商户是否需要缴纳印花税
  • 医院职工福利费使用范围和标准是多少
  • 收到一笔款在在当月已退回怎么做账?
  • 电子承兑转让怎么撤销
  • 暂停装修
  • 公司0申报怎么做账
  • 阻止系统蓝屏后怎么恢复
  • win10永久激活码神key一周内
  • php 多维数组转换成字符串
  • 酒店需要的原材料和包装费有哪些
  • 旧设备投资的税务处理
  • unc方式
  • 一只草丛里的狐狸作文
  • 港田路凤凰城
  • 预提土增税账务处理
  • 发票上可以盖财务专用章和发票专用章吗
  • 无形资产期末余额在哪方
  • 股东分红企业代扣个税
  • php实现上传文件
  • 销售货物产生的运费怎么开票
  • .gp4
  • 购买方红字信息表已开销售方系统查不到
  • 转出未交增值税会计处理
  • 赔偿款收据样本
  • 摊销结束后
  • MySQL主从数据库搭建
  • 企业付给个人工资怎么算
  • 汽车租赁发票账务怎么开
  • 公司纳税信用等级B级是什么意思
  • 附加税多计提了怎么调整
  • 小规模纳税人免增值税的账务处理
  • 怎么结转未交增值税
  • 什么情况需要个人所得税
  • 存货周转率特别高说明什么
  • 审计报告的分类不包含
  • 固定资产折旧提头不提尾
  • 2020年防洪基金计算公式
  • 其他应付款包括哪些内容
  • 成本结转怎么结转
  • 工会经费属于什么会计科目?
  • 建账怎么建
  • MySQL中truncate误操作后的数据恢复案例
  • SQL 统计一个数据库中所有表记录的数量
  • sql server索引的作用
  • mysql索引基础
  • JQS.exe是什么进程
  • instmsiw.exe进程简介
  • win8鼠标右键没反应
  • win10打开文件夹弹出新窗口
  • win10预览版退回正式版
  • linux系统添加用户的命令
  • linux系统漏洞总结
  • win10系统声音怎么打开
  • win8怎么关闭电脑
  • xtemplate node.js 的使用方法实例解析
  • jQuery基于ajax操作json数据简单示例
  • 仿百度首页html代码静态
  • 有关于js构造函数的题
  • js很简单
  • js中的常用方法
  • jQuery与Ajax以及序列化
  • jquery dom对象
  • jquery cookie用法
  • 减免税的三种方式
  • 江西省税务局官网查询系统
  • 关于船舶吨税的最新法律规范
  • 曲靖注册公司要哪些条件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设