有没有办法检查类方法是否已被声明为私有或公共?
我正在使用一个控制器,其中url被映射到类中的方法,我只想触发方法,如果它们被定义为public。
答案 0 :(得分:8)
您可以使用 reflection 扩展名,请考虑以下因素:
<强> ReflectionMethod::isPrivate 强>
的 ReflectionMethod::isProtected 强>
的 ReflectionMethod::isPublic 强>
的 ReflectionMethod::isStatic 强>
答案 1 :(得分:8)
要扩展Safraz Ahmed的答案(因为Reflection缺少文档),这是一个简单的例子:
class foo {
private function bar() {
echo "bar";
}
}
$check = new ReflectionMethod('foo', 'bar');
echo $check->isPrivate();
答案 2 :(得分:3)
让我们从另一边看。您并不需要了解方法的可见性级别。您需要知道是否可以调用该方法。 http://lv.php.net/is_callable
if(is_callable(array($controller, $method))){
return $controller->$method();
}else{
throw new Exception('Method is not callable');
return false;
}