PHP的反射机制

class A
{
public $ab= 1;
private $bc=2;
public static $instance = null;

public function abc($a,$b){
return $a . "|".$b;
}

public function dd(){
return "hello world!!";
}
/**
* type 方法
*/
public function mf($type = 1){
return "type:".$type;
}
}

public function rels(){
$obj = new \A();
//print_r($obj);
//创建一个反射类
$obj2 = new \ReflectionClass($obj);
$s = $obj2->newInstance();//相当于实例化这个类
$m = $obj2->getMethods();
foreach ($m as $k){
//print_r($k->getDocComment());
}
$op = $obj2->getProperties();//类的属性
// print_r($op);
//调用方法的方式一
//echo $s->abc(1,2);

//调用方法的方式二
//获取类的方法
$method = $obj2->getMethod("abc");
// //调用类的方法 参数:1.实例化类 2.方法的参数
// $method->invokeArgs($s,["111","5555"]);
//
// //调用方法的方式三 不带参数的方法
// $method = $obj2->getMethod("dd");
// //echo $method->invoke($s);
//
// //判断某个方法是否是公共的
// $pu = new \ReflectionMethod($obj,"dd");
// if ($method->isPublic()){
// echo "dd方法是公共的";
// }
//获取方法参数
print_r($method->getParameters());
//获取方法参数个数
print_r($method->getNumberOfParameters());
}
posted @ 2020-08-28 15:59  爱搬砖的小码农  阅读(256)  评论(0编辑  收藏  举报