2

考虑以下代码段:

class A {
    private function foo() {}
    protected function bar() {}
}
class B extends A {
    private function baz() {}
}

$r = new ReflectionClass('B');
foreach ($r->getMethods() as $method) {
    echo $method->getName() . PHP_EOL;
}

我希望得到以下输出:

baz
bar

但实际输出是:

baz
foo
bar

为什么getMethods()从父类返回私有方法,因此超出了所反映的类的范围B

我想知道这背后是否有任何理由,或者这是一个应该提交的错误?

4

1 回答 1

-1

不,这不是错误。这个函数完全符合它的设计目的。另外,查看您在问题中提供的链接,有一个filter参数,可用于设置要返回的方法的属性。

于 2013-04-05T15:34:41.060 回答