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

原文地址:https://www.cnblogs.com/dcb3688/p/4608061.html