PHP 5 具有完整的反射 API,添加了对类、接口、函数、方法和扩展进行反向工程的能力。
下面我们演示一下如何通过反射,来调用执行一个类中的私有方法:
<?php //MyClass这个类中包含了一个名为myFun的私有方法 class MyClass { private $tmp = 'hello'; private function myFun() { echo $this->tmp . ' ' . 'world!'; } } //通过类名MyClass进行反射 $ref_class = new ReflectionClass('MyClass'); //通过反射类进行实例化 $instance = $ref_class->newInstance(); //通过方法名myFun获取指定方法 $method = $ref_class->getmethod('myFun'); //设置可访问性 $method->setAccessible(true); //执行方法 $method->invoke($instance); ?>
阳光部落原创,更多内容请访问 http://www.sunbloger.com/