位置: 编程技术 - 正文

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

  • 个税漏申报了一个月在哪里申报
  • 小规模零申报增值税
  • 加计抵减附加税怎么做账务处理
  • 津贴和补贴计入加班费吗
  • 房产报废手续
  • 滴滴行程单修改器
  • 科技人员股权奖励
  • 工作未满12个月被辞退时前月平均工资怎么计算
  • 商业承兑汇票可以提前承兑吗
  • 托收承付怎么理解
  • 出差补助没有发票计入什么科目
  • 递延收益为什么要摊销
  • 以存货抵偿债务结转的相关存货跌价准备
  • 民办非企业单位是什么单位性质
  • 银行卡的概念和特点
  • 开票系统里的开户行可以更改吗
  • 完工产品定额直接材料费用
  • 小型微利企业年度汇算清缴报哪些报表
  • 残保金每年什么时候申报缴纳
  • 分公司向总公司转钱可以吗
  • 公司租赁个人车辆需要哪些手续
  • mac qq音乐怎么下载mp3格式的音乐
  • windows11如何删除账户
  • 无法访问您可能没有权限使用资源
  • win7音频服务未运行怎么办
  • 购入的车辆入账包括哪些费用
  • 银行退回手续费的账务处理
  • 补缴的耕地占用税怎么做账
  • php ftp函数
  • 继承税遗产税新政策
  • 转账支票购买办公用品会计
  • 求源代码
  • javascript动画教程
  • 深圳杯2020c题
  • 转账支票适用范围
  • 物流公司主营业务怎么写
  • 其他应收账款为个人借款
  • FPGA实现64点IFFT(VHDL)
  • protobuf 文档
  • 汽车租赁发票账务怎么开
  • 视同销售的会计处理是指?
  • 非独立核算的分公司需要独立建账吗
  • 电梯安装费如何分摊
  • 多计提费用 怎么冲
  • 营业税暂行实施细则
  • 没有发票会怎样
  • 盈余公积多计提对报表的影响
  • 基建结束后该做哪些工作
  • 管理费用包括哪些税
  • 暂估出库需要确认收入吗
  • 去年亏损今年盈利怎么弥补
  • 公司固定资产如何核算
  • 租金收入分摊政策规定
  • 旅游饮食服务业会计课后答案
  • MySQL 5.5.x my.cnf参数配置优化详解
  • win10飞行模式怎么关掉没有图标
  • fedora使用
  • 怎么处理鲍鱼
  • win8系统怎么设置密码
  • win8更新一直停着不动
  • centos设置hostname
  • mac硬盘的常见问题及解决
  • win7系统玩红色警戒怎么全屏设置
  • python利用for循环求1到100的和
  • node.js教程详细
  • js表单事件有哪些
  • python3.5怎么保存
  • Landroid/support/v7/internal/widget/ActionBarOverlayLayout;.stopNestedScroll
  • Jquery实现select multiple左右添加和删除功能的简单实例
  • android数据存储与访问的方式有
  • 税务案件移送案件的法律条款
  • 摩托车车船税怎么收费标准
  • 成品油税费具体计算
  • 什么叫党员双报到
  • 下岗职工再就业优惠政策
  • 增值税一般纳税人资格登记表
  • 白云区嘉禾税务局地址
  • 冀地是哪里
  • 完税证明在哪里查询打印
  • 烟叶税进项抵扣
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设