pho*_*bia 8 php oop methods visibility class
有没有办法检查类方法是否已声明为私有或公共?
我正在使用一个控制器,其中url映射到类中的方法,我只想触发方法,如果它们被定义为public.
为了扩展Safraz Ahmed的答案(因为Reflection没有文档),这是一个简单的例子:
class foo {
private function bar() {
echo "bar";
}
}
$check = new ReflectionMethod('foo', 'bar');
echo $check->isPrivate();
Run Code Online (Sandbox Code Playgroud)
让我们从另一边看。你真的不需要知道方法的可见性级别。您需要知道是否可以调用该方法。 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;
}
Run Code Online (Sandbox Code Playgroud)