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