共计 537 个字符,预计需要花费 2 分钟才能阅读完成。
ReflectionClass 是 PHP里面的反射类,传入类名可以解析整个类,方便我们做高级操作,下面记录使用遇到的坑
$className = ‘Test’;
// 判断类是否存在
if(!class_exists($className)) {
// 报错
}
$rc = new \ReflectionClass($className);
// 判断方法是否存在
if (!$rc->hasMethod($actionName)) {
// 报错
}
// 获取到方法
$method = $rc->getMethod($actionName);
// 判断当前方法是否为 public
if (!$method->isPublic()) {
// 报错,不是 public 方法不能 invoke
}
// 实例化,非静态方法,必须实例化,不然调用错误
// 静态方法 invoke 使用方法 $classObj 这里 换成 null
// $method->invoke($classObj, $param);
// 多个参数时,使用 invokeArgs 方法
// $method->invokeArgs($classObj, $param);
$classObj = $rc->newInstance();
return $method->invoke($classObj, $param);
正文完