为什么ReflectionClass :: getMethods()从父类返回私有方法?

时间:2013-04-05 15:31:55

标签: php reflection

请考虑以下代码段:

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

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

1 个答案:

答案 0 :(得分:-1)

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