PHP中方法可见性的检查

PHP中方法可见性的检查,php,oop,class,methods,visibility,Php,Oop,Class,Methods,Visibility,有没有办法检查类方法是否已声明为private或public 我正在编写一个控制器,其中URL被映射到类中的方法,并且如果它们被定义为公共的,我只想触发这些方法。 < P>可以使用 扩展,考虑这些: 要扩展的答案(因为反射缺少文档),这是一个快速示例: class foo { private function bar() { echo "bar"; } } $check = new ReflectionMethod('foo', 'bar'); echo

有没有办法检查类方法是否已声明为private或public

我正在编写一个控制器,其中URL被映射到类中的方法,并且如果它们被定义为公共的,我只想触发这些方法。

< P>可以使用<强> <强>扩展,考虑这些:




要扩展的答案(因为反射缺少文档),这是一个快速示例:

class foo {
    private function bar() {
        echo "bar";
    }
}

$check = new ReflectionMethod('foo', 'bar');

echo $check->isPrivate();

让我们从另一边看。您实际上不需要知道方法的可见性级别。您需要知道是否可以调用该方法。


你也可能(也许)想要检查最终/静态/抽象。这是迄今为止提供的最自然的解决方案。是的,非常好的建议。问题是所有的方法都在当前类中,所以它们都是可调用的、私有的或公共的,所以我在这里创建了自己的可见性,只需要从url运行公共方法。但故事的一部分是我发现,
\uu destruct
等需要是公共的,因此可以通过url调用,所以现在我选择了一个带有方法前缀的组合(action)。
if(is_callable(array($controller, $method))){
  return $controller->$method();
}else{
  throw new Exception('Method is not callable');
  return false;
}