PHP反射类的理解(代码篇)

<?php
/**
* Created by PhpStorm.
* User:
* Date: 2017/6/12
* Time: 14:34
* 关于反射类的理解
*/
class Person {


public $datang = '123';

public $datang1 = '1234';

private function getName(){
echo $this->datang;
}

public function getName1(){
echo $this->datang1;
}

}

//建立 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);
原文地址:https://www.cnblogs.com/datang6777/p/6992958.html