编程语言
首页 > 编程语言> > php – 查明方法是受保护还是公开

php – 查明方法是受保护还是公开

作者:互联网

使用此代码我试图测试是否可以调用某些函数

if (method_exists($this, $method))
    $this->$method();

但是现在我希望能够限制执行,如果$方法受到保护,我还需要做什么?

解决方法:

你会想要使用Reflection.

class Foo { 
    public function bar() { } 
    protected function baz() { } 
    private function qux() { } 
}
$f = new Foo();
$f_reflect = new ReflectionObject($f);
foreach($f_reflect->getMethods() as $method) {
    echo $method->name, ": ";
    if($method->isPublic()) echo "Public\n";
    if($method->isProtected()) echo "Protected\n";
    if($method->isPrivate()) echo "Private\n";
}

输出:

bar: Public
baz: Protected
qux: Private

您还可以按类和函数名实例化ReflectionMethod对象:

$bar_reflect = new ReflectionMethod('Foo', 'bar');
echo $bar_reflect->isPublic(); // 1

标签:php,protected,public-method
来源: https://codeday.me/bug/20190614/1237687.html