• 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);

  • 相关阅读:
    Navicat连接mysql1862错误your password has expired.To log in you must change itusing a client that supports expired passwords
    机器学习听课 | 目录 | 00
    Git实战 | 其他 | 04
    练手SQL数据 | 目录 | 00
    练手SQL数据 | 区域自关联 | 02
    蓝桥杯训练 | 数学和简单DP | 03
    Python基础 | linux下Python的安装 | 03
    Java基础 | 目录 | 00
    初级-MySQL经典练习题及答案,常用SQL语句练习50题
    MYSQL必知必会-SQL语句查询
  • 原文地址:https://www.cnblogs.com/dcb3688/p/4608061.html
Copyright © 2020-2023  润新知