考虑以下代码段:
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
?
我想知道这背后是否有任何理由,或者这是一个应该提交的错误?