0

我想使用反射从其他类方法调用私有方法,如下所示:

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'

这让我很困惑,因为我在同一个类方法的范围内调用调用。有没有什么方法可以在不使用 $this->$methodName(), call_user_func_array(...) 的情况下做我想做的事?此外,使用 $method->setAccessible(true) 也是不可取的,因为它破坏了封装概念。

感谢您的关注。

4

0 回答 0