我想使用这样的反射从类的其他方法调用私有方法:
class Foo {
private function bar() {
print "!@#";
}
public function foobar($methodName) {
$method = new ReflectionMethod(get_class($this), $methodName);
$method->invoke($this);
}
}
$foo = new Foo();
$foo->foobar('bar');
此代码生成错误:
Fatal error: Uncaught exception 'ReflectionException' with message 'Trying to invoke private method Foo::bar() from scope ReflectionMethod'
这让我感到困惑,因为我在同一个类方法的范围内调用invoke。有没有办法在不使用$ this-> $ methodName(),call_user_func_array(...)的情况下做我想做的事情?另外,不希望使用$ method-> setAccessible(true),因为它破坏了封装概念。
感谢您的关注。