内容目录
<?php /** * 关于反射类的理解 */ class Person { /** type=chenjie */ public $chenjie = 'chenjie00'; /** type=chenjie */ public $chenjie1 = 'chenjie11'; private function getName(){ echo $this->chenjie; } public function getName1(){ echo $this->chenjie1; } } //建立 Person这个类的反射类 $class = new ReflectionClass('Person'); //打印所有属性名,包含private,protected,public $properties = $class->getProperties(); foreach ($properties as $key => $value) { var_dump($value->getName()); } //打印所有属性的注释并正则,包含private,protected,public foreach($properties as $property) { $docblock = $property->getDocComment(); //只能打印多行注释 var_dump($docblock); preg_match('/ type\=([a-z_]*) /', $docblock, $matches); var_dump($matches); } //打印所有方法名 foreach ($class->getMethods() as $key => $value) { var_dump($value->getName()); } /** 如何执行方法 */ //相当于实例化Person 类 $instance = $class->newInstanceArgs(); //执行getName1方法,方法必须是public属性的,否则会报fatal error $instance->getName1(); //获取Person getName1方法 $ec=$class->getmethod('getName1'); //执行getName1方法,方法必须是public属性的,否则会报fatal error $ec->invoke($instance);