zoukankan      html  css  js  c++  java
  • php ReflectionClass类遍历类中包含元素的方法

    ReflectionClass 类

    类内容

    class MyClass {
    
        const myconst1 = 100000001;
        const myconst2 = [
            1 => '开始时间',
            2 => '结束时间',
        ];
    
        public $title = '中国移动';
        public $city = '湖南长沙';
        static $type = [
            1 => '男',
            2 => '女',
        ];
        static $create_time = 1530000000;
    
        public function actionIndex() {
            
        }
    
        public function actionAdd() {
            
        }
    
    }
    
    $MyClass = new MyClass();  # 实例化类
    
    $rc = new ReflectionClass('MyClass');  # 实例化自定义类的ReflectionClass信息

    获取静态成员属性

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

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

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

    获取函数(方法体)

    /**
     * 获取函数(方法体)
     */
    $v = $rc->getMethods();    # 获取方法的数组
    print_r($v);
    foreach ($v as $value) {
          echo $value->getName();
          echo "
    
    ";
    }

    获取属性

    /**
     * 获取属性
     */
    $v = $rc->getProperties();  # 获取一组属性
    print_r($v);
    # 获取属性的name与值
    foreach ($v as $value) {
        $value = $value->getName();    # 获取对象name
        if (isset($MyClass::$$value)) {  # 静态成员属性
            print_r([$value => $MyClass::$$value]);
        } elseif (isset($MyClass->$value)) {  # 成员属性
            print_r([$value => $MyClass->$value]);
        }
    }

    获取自定义常量

    /**
     * 获取自定义常量
     */
    echo MyClass::myconst1;

     遍历自定义常量

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

  • 相关阅读:
    《Windows核心编程系列》十四谈谈默认堆和自定义堆
    《windows核心编程系列》十五谈谈windows线程栈
    《Windows核心编程系列》十三谈谈在应用程序中使用虚拟内存
    《Windows核心编程系列》十二谈谈Windows内存体系结构
    《Windows核心编程系列》十一谈谈Windows线程池
    Extjs利用vtype验证表单
    Extjs文本输入框
    Extjs文本输入域
    远程数据源Combobox
    Extjs整体加载树节点
  • 原文地址:https://www.cnblogs.com/dcb3688/p/4608061.html
Copyright © 2011-2022 走看看