【发布时间】:2011-02-28 05:24:40
【问题描述】:
有什么方法可以检查一个类方法是被声明为私有的还是公有的?
我正在开发一个控制器,其中 url 映射到类中的方法,并且我只想在它们被定义为公共时触发这些方法。
【问题讨论】:
标签: php oop class methods visibility
有什么方法可以检查一个类方法是被声明为私有的还是公有的?
我正在开发一个控制器,其中 url 映射到类中的方法,并且我只想在它们被定义为公共时触发这些方法。
【问题讨论】:
标签: php oop class methods visibility
【讨论】:
为了扩展 Safraz Ahmed 的答案(因为 Reflection 缺少文档),这是一个简单的示例:
class foo {
private function bar() {
echo "bar";
}
}
$check = new ReflectionMethod('foo', 'bar');
echo $check->isPrivate();
【讨论】:
让我们从另一边看。您实际上并不需要知道方法的可见性级别。您需要知道是否可以调用该方法。 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;
}
【讨论】:
__destruct 等需要公开,因此可以通过 url 调用,所以现在我选择了一个带有方法前缀 (action_) 的组合。