位置: 编程技术 - 正文

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

  • 所得税调增调减项目有哪些
  • 二手房交易税费2023新规定
  • 出口退税哪些资料要留底
  • 公司附加税怎么计算
  • 合同上怎么注明开具6%的含税普通发票
  • 下列支出不可以从其应纳税所得额中扣除的是
  • 向其他单位无偿提供服务的不需缴纳增值税
  • 周转材料租赁费怎么结转成本
  • 应收账款已收回但是账面还有余额怎么处理
  • 公司欠增值税如何补交?
  • 全年一次性奖金计税方式
  • 计提附加税的会计分录
  • 纳税人必须先复议再诉讼
  • 打款与发票开具的会计处理方法是怎样的
  • 技术服务费属于什么税收分类编码
  • 电子发票截图可以吗
  • 增值税发票开具错误重开该怎么做会计分录?
  • 直接收款涉及增值税吗
  • 应收出租包装物的租金计入
  • 其他应付款和其他应交款区别
  • 补缴城镇土地使用税会计分录怎么做
  • 净资产收益率是什么指标
  • 哪些情况下可以终止心肺复苏
  • 土地补偿款会议记录范文
  • css 栅格
  • 银行代扣的年费怎么退
  • 固定资产进项发票
  • 工程长期停工
  • 高薪技术企业研发费用标准
  • 补缴的耕地占用税怎么做账
  • 注销企业基本户需要先注销一般户吗
  • win7电脑开启麦克风权限设置
  • php linq
  • 企业所得税汇算表
  • vue引入svg图片
  • elipse左侧菜单栏显示
  • php redis使用
  • XHProf报告字段含义的解析
  • 出口退税抵减应计入哪里
  • 物流公司的会计好干吗
  • 房屋出租 交税
  • python smote算法
  • 税控盘的服务费可以抵扣吗
  • 季报利润总额怎么算
  • 工业企业增值税税负多少合理
  • 员工的生日津贴怎么发
  • SqlServer 2005 T-SQL Query 学习笔记(4)
  • 先给发票后付款做账
  • 小规模未开票收入填在哪里
  • 应收账款逾期什么意思
  • 应付账款不用付情况说明
  • 年末结转步骤
  • 捐赠支出的账务处理
  • 抵账的车买了什么后果
  • 餐饮店赠品
  • 资产负债表里的应交税费怎么填
  • 小微企业a201010表怎么填
  • win2000服务器
  • 手把手教你安装实木门
  • winpup32.exe - winpup32是什么进程 什么意思
  • windows7文件夹选项在哪里
  • windows用户如何添加新用户账户信息
  • centos支持中文
  • centos7 lvcreate
  • win8系统电脑
  • linux支持哪些类型的设备
  • Extjs4 类的定义和扩展实例
  • jquery1
  • 递归怎么调用
  • unityc#打不开
  • javascript常用语句
  • 在javascript中如何定义并调用函数
  • nodejs调用打印机驱动
  • Android OpenGL ES(九)----构建几何物体
  • 猫的合集
  • LinearLayout layout_weight解析
  • 电梯维修费的税率
  • 广州市地税局副局长
  • 山东省地方税务局公告2018年第6号
  • 上海市税务局的电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设