请考虑以下代码段:
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
?
我想知道这背后是否有任何理由,或者这是否应该提交错误?
答案 0 :(得分:-1)
不,这不是错误。此功能完全符合其设计目标。另外,请查看您在问题中提供的链接,有一个filter
参数,可用于设置要返回的方法的属性。