位置: 编程技术 - 正文

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

  • 税金及附加属于营业成本吗
  • 残保金季报要填上年职工人数
  • 代开普通发票需提供哪些材料
  • 现金流量表现金指的什么
  • 财政部监制的收据可以手写吗
  • 临时增加增值税发票
  • 减免教育费附加和地方教育费附加
  • 工会经费的减免申请
  • 个人钱转入对公账户账务处理
  • 公司库存现金如何存回银行
  • 将自制的一批新产品用于对外投资,生产成本为300000
  • 购买原材料已付款怎么记账
  • 个体户生产经营所得税税率表
  • 大型医用设备维修效益成本分析 课件ppt
  • 非直接结算是什么意思
  • 应收账款转让的会计处理
  • 高新企业研发人员
  • 酒精是否属于消费税征税范围
  • 出口发票上的汇率按哪个开?
  • 公户的利息收入账务处理咋处理
  • 出口退税新政策对出口贸易的影响
  • 收不到的物业费是否增值税确认收入
  • 工资薪金与劳务报酬的区别有哪些
  • 关于工程材料的质量控制说法正确的是
  • 工会会员会费缴费证明怎么开
  • 公司为实习生买保险列支什么科目?
  • 公司出租房租怎么交税
  • 双线服务器
  • win7系统更改属性内存信息的方法有哪些
  • 增值税纳税人的区别
  • 补充养老保险税前扣除标准与扣除比例
  • 停在花朵上,好像在认真的听同学们读课文修改病句
  • 融资租赁业务增资扩股
  • 浅谈php中的错误处理方法
  • vue 滚动条
  • 微软edge插件
  • 发票作废发票怎么处理
  • vue.js如何安装
  • 公司购买空调属于电子设备吗
  • three.js gui
  • 实际库存小于账面库存
  • 应收账款周转率多少合适
  • 厂家给的返点怎么下往来账
  • 工会经费怎么计算缴纳
  • 新准则经营租赁 提折旧
  • 专项附加可以随便填吗
  • 废料处理没开票销项税
  • 必要报酬率怎么求
  • 进项发票的作用
  • 物流辅助服务费属于什么费用
  • 所得税费用科目编码
  • 建筑安装行业都需要什么资格证书
  • 如何调整以前年度库存
  • 已认证发票退回的流程
  • 现代服务业包括哪些项目
  • 新企业办理金税盘流程
  • sqlserver not in 语句使程充崩溃
  • sql必学必会
  • sqlmap 提权
  • 不接入局域网更新
  • linux文件压缩和解压缩命令
  • windows xp windows
  • jquery如何赋值
  • python怎么打印完整的信息
  • python自动化处理
  • unity3D游戏开发
  • 用bat实现定时执行任务的批处理文件
  • 用pyth
  • 安卓系统滑动设置
  • 批处理中数字可以用什么代替
  • shell脚本 \r
  • jQuery ajax方法传递中文时出现中文乱码的解决方法
  • 禁止所有陌生人的来电设置
  • 电子税务局更改密码怎么改
  • 南京地税局局长名单
  • 按照5%的征收率减按1.5%
  • 国家税务总局23号文件
  • 简述进料加工对中国的意义
  • 深圳献血奖励标准
  • 关于铁路安全的漫画
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设