ReflectionClass 类

类内容

  1. class MyClass {
  2.  
  3. const myconst1 = 100000001;
  4. const myconst2 = [
  5. 1 => '开始时间',
  6. 2 => '结束时间',
  7. ];
  8.  
  9. public $title = '中国移动';
  10. public $city = '湖南长沙';
  11. static $type = [
  12. 1 => '男',
  13. 2 => '女',
  14. ];
  15. static $create_time = 1530000000;
  16.  
  17. public function actionIndex() {
  18.  
  19. }
  20.  
  21. public function actionAdd() {
  22.  
  23. }
  24.  
  25. }
  26.  
  27. $MyClass = new MyClass(); # 实例化类
  28.  
  29. $rc = new ReflectionClass('MyClass'); # 实例化自定义类的ReflectionClass信息

获取静态成员属性

  1. /**
  2. * 获取静态成员属性
  3. * static成员能够限制外部的访问,因为static的成员是属于类的,是不属于任何对象实例,是在类第一次被加载的时候分配的空间,其他类是无法访问的,只对类的实例共享,能一定程度对类该成员形成保护
  4. * 在类的外部不需要实例而直接使用类名就可以访问静态的成员, 当然,实例化后也可访问
  5. */
  6. echo MyClass::$create_time;
  7. echo $MyClass::$create_time;

获取静态成员属性的name->value

  1. /**
  2. * 获取静态成员属性的name->value
  3. */
  4. $v = $rc->getStaticProperties(); # 获取静态(static)属性
  5. print_r($v);

获取函数(方法体)

  1. /**
  2. * 获取函数(方法体)
  3. */
  4. $v = $rc->getMethods(); # 获取方法的数组
  5. print_r($v);
  6. foreach ($v as $value) {
  7. echo $value->getName();
  8. echo "\n\r";
  9. }

获取属性

  1. /**
  2. * 获取属性
  3. */
  4. $v = $rc->getProperties(); # 获取一组属性
  5. print_r($v);
  6. # 获取属性的name与值
  7. foreach ($v as $value) {
  8. $value = $value->getName(); # 获取对象name
  9. if (isset($MyClass::$$value)) { # 静态成员属性
  10. print_r([$value => $MyClass::$$value]);
  11. } elseif (isset($MyClass->$value)) { # 成员属性
  12. print_r([$value => $MyClass->$value]);
  13. }
  14. }

获取自定义常量

  1. /**
  2. * 获取自定义常量
  3. */
  4. echo MyClass::myconst1;

 遍历自定义常量

  1. /**
  2. * 遍历自定义常量
  3. */
  4. $v = $rc->getConstants(); # 获取一组常量
  5. print_r($v);

php ReflectionClass类遍历类中包含元素的方法的更多相关文章

  1. python中的enumerate函数用于遍历序列中的元素以及它们的下标

    enumerate 函数用于遍历序列中的元素以及它们的下标: >>> for i,j in enumerate(('a','b','c')): print i,j 0 a1 b2 c ...

  2. python去除列表中重复元素的方法

    列表中元素位置的索引用的是L.index 本文实例讲述了Python去除列表中重复元素的方法.分享给大家供大家参考.具体如下: 比较容易记忆的是用内置的set 1 2 3 l1 = ['b','c', ...

  3. struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  4. 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  5. PHP从数组中删除元素的方法

    PHP从数组中删除元素的方法 本篇文章主要介绍了PHP从数组中删除元素的四种方法实例 删除一个元素,且保持原有索引不变 使用 unset 函数,示例如下: 1 2 3 4 5 <?php   $ ...

  6. PHP实现查询两个数组中不同元素的方法

    以下实例讲述了PHP实现查询两个数组中不同元素的方法.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...

  7. Python简单遍历字典及删除元素的方法

    Python简单遍历字典及删除元素的方法 这篇文章主要介绍了Python简单遍历字典及删除元素的方法,结合实例形式分析了Python遍历字典删除元素的操作方法与相关注意事项,需要的朋友可以参考下 具体 ...

  8. jquery遍历标签中自定义的属性方法

    在开发中我们有时会对html标签添加属性,如何遍历处理 <ul> <li name="li1" sortid="nav_1">aaaaa ...

  9. python中列表元素连接方法join用法实例

    python中列表元素连接方法join用法实例 这篇文章主要介绍了python中列表元素连接方法join用法,实例分析了Python中join方法的使用技巧,非常具有实用价值,分享给大家供大家参考. ...

随机推荐

  1. laravel带参数分页

    <!---分页--> <div id="pagination-box"> {{ $list->appends(['mobile'=>$mobil ...

  2. 树莓派中QT实现PWM

    树莓派中QT实现PWM 在QT中实现 PWM 使用的驱动为 wiringPi 之前的博客中已经介绍了 wiringPi , BOARD 管脚, BCM 之间的关系 这次, 就介绍在 wiringPi ...

  3. (二叉树 递归) leetcode 145. Binary Tree Postorder Traversal

    Given a binary tree, return the postorder traversal of its nodes' values. Example: Input: [1,null,2, ...

  4. 01-oracle学习环境配置

    1.安装oracle与SQL Developer oracle10g安装教程 2.创建表空间以及用户 表空间是存储数据文件的容器,由数据文件组成,数据库的所有系统数据和用户数据都必须存储在数据文件中. ...

  5. vue引入fastclick设置输入框type="number"报错Failed to execute 'setSelectionRange' on 'HTMLInputElement': The input element's type ('number') does not support selection.的解决办法

    将输入框type设为text,通过正则验证输入的值

  6. Eclipse——手把手教新手安装Eclipse

    一.准备工作:安装JRE和JDK. 全名分别为:Java Runtime Environmen和Java SE Development Kit,推荐直接在某度软件中心下载即可,注意区分64位和32位. ...

  7. XXX系统项目分析

    目标: 实现网上需求征集与审核. 好处: (1)网上填报不受时间和地点限制: (2)流程简单明确,节省人力物力: (3)信息存储,查询,筛选远比纸质材料方便: (4)方便统计,分析数据: 度量标准: ...

  8. 如何使用门罗币远程节点remote node?

    当使用门罗币钱包的时候,都需要启动monerod,用来同步门罗币区块. 但是因为区块体积目前已经超过40G了, 所以需要花费很多天时间才能把数据同步完. 这对于使用门罗币非常的不方便. 远程节点rem ...

  9. Selenium中三种等待的使用方式---规避网络延迟、代码不稳定问题

    在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果你不做任何处理的话,代码会由于没有找到元素,而报错.这时我们就要用到wait(等待),而在Selenium中,我们可以用到一共三种等待, ...

  10. docker部署redis及踩到的坑

    对docker很好奇,玩了一下,部署了一个redis,结果踩了很多坑 任务目的就是在docker中成功部署redis并保证数据持久化到本地,配置也使用本地配置 docker run -p : -v $ ...