<?phpclass Person
{/*** 这里是对$_allowDynamicAttributes的注释信息*/private $_allowDynamicAttributes = false;/** type=primary_autoincrement */protected $id = 0;/** type=varchar length=255 null */  protected $name;/** type=text null */ protected $biography;public function getId(){return $this->id;}public function setId($v){$this->id = $v;}public function getName(){return $this->name;} public function setName($v){$this->name = $v;}public function getBiography(){return $this->biography;}public function setBiography($v){$this->biography = $v;}
}$class = new ReflectionClass('Person'); //建立Person这个类的反射类
$instance = $class->newInstanceArgs();  //相当于实例化Person类
//var_dump($instance);
//1 获取属性(Properties):
echo "<h1>获取属性</h1>";
$properties = $class->getProperties();
foreach ($properties as &$property)
{echo $property->getName()."<BR>";
}
//默认情况下,ReflectionClass会取所有的属性,private 和protected的也可以
//如果只想获取到private属性,就要额外传个参数
//可用参数列表:
// $private_properties = $class->getProperties(ReflectionProperty::IS_PRIVATE);
// 可用参数列表//ReflectionProperty::IS_STATIC//ReflectionProperty::IS_PUBLIC//ReflectionProperty::IS_PROVATE//ReflectionProperty::IS_PROECTED
//如果要同时获取public 和private 属性,就这样写:ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED。echo "<h1>获取注释</h1>";
//获取注释
foreach($properties as &$property)
{if($property->isProtected())  测试该方法是否为protected{$docblock = $property->getDocComment();preg_match('/ type\=([a-z_]*) /', $property->getDocComment(), $matches);  echo $matches[1]."<BR><BR>";}
}//获取类的方法
//获取方法(methods):通过getMethods()来获取到类的所有methods//执行类的方法
$instance->setBiography(22);
echo $instance->getBiography(); //执行Person里面的方法getBiography//或者
$ec = $class->getMethod('setName');
$ec->invoke($instance,'xlc');$ec2 = $class->getMethod('getName');
echo $ec2->invoke($instance);?>

  

转载于:https://www.cnblogs.com/xiangxiaodong/p/3168606.html

php反射API 获取属性/注释/方法 执行方法 实例相关推荐

  1. 前端js调用后端API获取数据的三种方法(2022.7.25)

    前端js调用后台API获取数据的三种方法(2022.7.25) 前言 需求分析 一个Get实例 浏览器请求 SoapUI软件请求 一个Post实例 浏览器请求 SoapUI软件请求 1.Http简介( ...

  2. 在vuejs 中使用axios不能获取属性data的解决方法

    在vuejs 中使用axios不能获取属性data的解决方法 参考文章: (1)在vuejs 中使用axios不能获取属性data的解决方法 (2)https://www.cnblogs.com/lo ...

  3. 04.React事件 方法、 React定义方法的几种方式 获取数据 改变数据 执行方法传值...

    2019独角兽企业重金招聘Python工程师标准>>> 一.基本用法 在以类继承的方式定义的组件中,为了能方便地调用当前组件的其他成员方法或属性(如:this.state),通常需要 ...

  4. 通过PropertyDescriptor反射获取属性的 getter/setter 方法

              Java类中的私有的(private)属性是获取不到的(即使使用继承依然获取不到),那如果非要获取私有属性的值怎么办呢?一般的做法是将该java类封装称为一个JavaBean,即封 ...

  5. Java利用PropertyDescriptor获取属性的 getter/setter 方法

    PropertyDescriptor类: PropertyDescriptor类表示JavaBean类通过存储器导出一个属性.主要方法:     1. getReadMethod(),获得用于读取属性 ...

  6. ladp3 获取属性_Ldap3库使用方法(四)

    #!/usr/bin/env python # -*- coding: utf-8 -*- import json from ldap3 import ALL_ATTRIBUTES # 注意:ldap ...

  7. 常用的几种API获取ip地理位置的使用方法

    最近公司让做一个用户登录.付费的时候记录操作人的地理位置. 搜了很多帖子,一开始用的淘宝的api,但是用了一段时间发现,这个api当获取的次数多了之后,就报404了,导致很多记录没有记录地址,虽然淘宝 ...

  8. 如何将百度地图API获取经纬度写成公有方法?

    原问题来自于CSDN问答社区:http://ask.csdn.net/questions/636 问题描述: 我使用的是百度地图API来获取经纬度坐标.但是我的程序里面有多个地方用到了经纬度. 所以我 ...

  9. ladp3 获取属性_Ldap3 库使用方法(三)

    #!/usr/bin/env python # -*- coding: utf-8 -*- import json from ldap3 import ALL_ATTRIBUTES # 注意:ldap ...

最新文章

  1. VS2005中ajax安装指南[转]
  2. Thinkphp5创建控制器
  3. C#socket之TCP开发详解(一)
  4. 三元组法矩阵加法java_计算机视觉学习笔记(2.1)-KNN算法中距离矩阵的计算
  5. skywalking服务端_skywalking部署
  6. android闹钟测试工具,android开发:AlarmManager闹钟管理器的实例
  7. mysql text类型 使用方法_MySQL使用TEXT/BLOB类型的知识点详解
  8. 微信公众帐号开发教程第17篇-应用实例之智能翻译
  9. python数据库模式_python – 如何测试django数据库模式?
  10. 一文详解深度相机之TOF成像
  11. 走迷宫 6 6 c语言,游戏迷宫的实现
  12. mysql查询记录总数_MySQL记录总条数实现查询优化
  13. 带通滤波器电路图设计(转)
  14. Tomcat 中文乱码
  15. Python小爬虫实例
  16. 2023第十届中国北京国际老年用品、智慧养老及老龄服务展览会
  17. 怎么做AE文字翻页动效?3步学会制作文字翻页
  18. sim插拔识别时间_智能手机插拔寿命测试标准
  19. Python入门到实践(上)(牛客网题库)day2
  20. Python 实现图片转文字

热门文章

  1. C++:在堆上创建对象,还是在栈上?
  2. oracle_linux安装oracle_12.1.0
  3. VCGLib中邻接关系的实现
  4. ThreadLocal分析学习
  5. RFID将成为物联网革命的首战
  6. ASP.NET 2.0 Web Part编程之定制Web Part
  7. C#利用正则表达式实现字符串搜索
  8. spring-boot整合场景实例分析
  9. 15款最佳的 jQuery 分步引导插件
  10. linux进程属性,Linux进程属性及含义