PHP通过反射方法调用执行类中的私有方法

下面我们来看一篇关于PHP通过反射方法调用执行类中的私有方法,希望这篇教程能够帮助到各位朋友,有兴趣的可以进来看看.

PHP 5 具有完整的反射 API,添加了对类、接口、函数、方法和扩展进行反向工程的能力.

下面我们演示一下如何通过反射,来调用执行一个类中的私有方法:

  1. <?php
  2. //MyClass这个类中包含了一个名为myFun的私有方法
  3. class MyClass {
  4. private $tmp = 'hello';
  5. private function myFun()
  6. {
  7. echo $this->tmp . ' ' . 'world!';
  8. }
  9. }
  10. //通过类名MyClass进行反射
  11. $ref_class = new ReflectionClass('MyClass');
  12. //phpfensi.com
  13. //通过反射类进行实例化
  14. $instance = $ref_class->newInstance();
  15. //通过方法名myFun获取指定方法
  16. $method = $ref_class->getmethod('myFun');
  17. //设置可访问性
  18. $method->setAccessible(true);
  19. //执行方法
  20. $method->invoke($instance);
  21. ?>