使用Reflection从PHP中的同一类的其他方法调用私有方法

时间:2012-05-23 21:42:37

标签: php oop reflection

我想使用这样的反射从类的其他方法调用私有方法:

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),因为它破坏了封装概念。

感谢您的关注。

0 个答案:

没有答案