位置: 编程技术 - 正文

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

  • 个税应纳税所得额是要上交的钱吗
  • 计算应交增值税并结转未交增值税怎么做用友
  • 跨年度进项税额转出怎么申报
  • 其他应付款辅助核算可以设置职员吗
  • 电子发票开票方怎么做账
  • 个体工商户注销后的责任承担问题
  • 企业如何加强存货管理工作
  • 有限合伙企业合伙人责任
  • 超市销售购物卡怎么开票
  • 租金收入摊销
  • 小企业营业外收入明细
  • 更新改造过程中被替换部件的账面价值
  • 收到美元货款兑换人民币流程
  • 垫付了医药费保险报销时怎么办
  • 季节性停工损失属于期间费用吗
  • 个体户地税怎么收费
  • 小规模纳税人还是一般纳税人
  • 开票金额开多了,对公司有影响吗
  • 收到雇主责任险发票计入什么科目
  • 汇算清缴发票可以做费用票吗
  • 月末计提短期借贷利息
  • 公司购买自用房产税如何征收
  • 合并报表实操视频
  • 如何在Windows 11上卸载更新
  • 委托加工物资成本计入
  • 网件R6400路由器怎么样?网件R6400上网与传输评测的教程
  • 废料收入应如何确定
  • 公司处理固定资产车辆怎么开发票
  • 企业与企业之间借款账务如何处理
  • 司机公里补助用不用交个税
  • 企业所得税征收点
  • 发放员工奖励
  • 零星分布的意思
  • 购买股票会计处理流程
  • 火山口湖成因
  • rep p
  • 行政单位基建账如何并入大账
  • python中 =是什么意思
  • 增值税普通发票可以抵扣吗
  • 银行转账回执单掉了
  • Ficstar Software � Web Data Extraction Tools
  • 宝塔面板在哪
  • 总账和成本哪个工资高
  • 工程项目辅材占比
  • 营改增无形资产
  • 劳务公司成本核算方法一般选择哪个
  • 保险赔偿收入如何减税额
  • 办理国有土地使用证
  • 咨询服务行业的收入与成本
  • 汽车修理厂利润
  • 销售免税货物的会计分录
  • 开办费如何摊销成本
  • 会计做账手工帐
  • sql server 性能调优
  • mysql启动服务器失败
  • win7组织在哪
  • 免费获取windows8.1
  • linux命令提示符不见了
  • windowsxp开机加载页面不动
  • xp系统如何更改开机启动项
  • win8删除文件很慢
  • 电脑ie8浏览器
  • windows10升级后
  • Win10 Mobile10586.122更新了哪些内容?更新内容大全汇总
  • javascript.info
  • javascript 浏览器
  • jquery动态设置css
  • nodejs网站开发
  • 运行node.js的应用程序服务器
  • vps 备份
  • python迭代器生成器
  • javascript图表
  • 云南省国家税务局
  • 电子普通发票怎么查验真伪
  • 浙江宁波江北区都有哪些大学?
  • 工商登记是实质性的吗
  • 福建税务局电子税务局电话多少
  • 12366几点上班人工服务
  • 小型贸易企业公司有哪些
  • 出口货物免抵税额怎么申报附加税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设