PHP的反射动态获取类方法、属性、参数操作示例
2020-03-11 16:58
1271 查看
本文实例讲述了PHP的反射动态获取类方法、属性、参数操作。分享给大家供大家参考,具体如下:
我们可以在PHP运行时,通过PHP的反射动态的获取类的方法、属性、参数等详细信息。
用途:插件的设计,文档的自动生成,扩充PHP语言。
<?php class Person { const weightUnit = 'kg'; const heightUnit = 'cm'; public $name = 'test'; public $age = 1; public function say($msg = '') { echo $msg; } } $p = new Person (); // 普通的实例化对象,调用方法 $p->say ( 'hello' ); echo "<br/>"; // 创建一个Person的反射类 $rp = new ReflectionClass ( 'Person' ); // 通过ReflectionClass的方法来获取类的详细信息 // 获取常量 echo $rp->getConstant ( 'weightUnit' ); echo "<br/>"; // 获取类中已定义的常量 var_dump ( $rp->getConstants () ); // 获取属性,返回的是一个ReflectionProperty类 $propName = $rp->getProperty ( 'name' ); echo $propName->getName(), ':', $propName->getValue ( new Person () ); echo "<br/>"; // 获取类中已定义的一组属性 $propArr = $rp->getProperties (); foreach ( $propArr as $obj ) { echo $obj->getName (), ':', $obj->getValue ( new Person () ); } echo "<br/>"; //获取方法,返回的是一个ReflectionMethod类 $sayMetd = $rp->getMethod('say'); if($sayMetd->isPublic() && !$sayMetd->isAbstract()) { $sayMetd->invoke(new Person(), 'hehe'); $sayMetd->invokeArgs(new Person(), array('hehe')); } //获取类中已定义的一组方法,可以过滤不需要的方法 $metds = $rp->getMethods(); //获取命名空间 echo $rp->getNamespaceName(); echo "<br/>"; //判断一个方法是否定义 if($rp->hasMethod('say')) { echo 'say has'; } echo "<br/>"; //判断一个属性是否定义 if($rp->hasProperty('name')) { echo 'name has'; }
运行结果:
hello
kg
array(2) { ["weightUnit"]=> string(2) "kg" ["heightUnit"]=> string(2) "cm" } name:test
name:testage:1
hehehehe
say has
name has
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- PHP实现动态获取函数参数的方法示例
- 反射机制_介绍_Class对象获取_动态操作_构造器_方法_属性JAVA211-212
- Python实现动态添加属性和方法操作示例
- java 反射机制获取类名、属性、方法、构造器和反射动态使用
- 反射示例1-----执行反射dll的方法和获取属性的值
- Unity热更新之C#反射动态获取类属性及方法
- 反射机制的概述和字节码对象的获取方式 JavaBean的概述&BeanUtils的使用 反射操作构造方法、成员方法、成员属性
- 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】
- php建站示例操作 获取文档/目录相关属性
- Unity热更新之C#反射动态获取类属性及方法
- 6.通过反射动态创建对象,获取属性,获取方法
- PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
- Java 反射:Class类,动态加载类获取方法和成员变量构造信息,方法反射的基本操作,集合泛型的本质
- 4.2、JS——var 数据类型 节点标签属性操作 动态获取方法
- php反射学习之不用new方法实例化类操作示例
- php反射API 获取属性/注释/方法 执行方法 实例
- Java中用反射的方式获取类中的所有属性和方法,以及获取属性的默认值,设置属性的默认值
- 通过反射获取街道这个类的所有属性、所有方法信息
- php全面获取url地址栏参数多种方法:
- 简单介绍PHP获取文件属性方法