当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP反射机制用法实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-10 13:32:55 浏览: 评论:0 

这篇文章主要介绍了PHP反射机制用法,是PHP程序设计中比较重要的概念,需要的朋友可以参考下

本文实例讲述了PHP反射机制的用法,分享给大家供大家参考之用。具体方法如下:

演示示例代码如下所示:

  1. <?php 
  2. class ClassOne { 
  3.   function callClassOne() { 
  4.     print "In Class One"
  5.   } 
  6. class ClassOneDelegator { 
  7.   private $targets
  8.   function __construct() { 
  9.     $this->target[] = new ClassOne(); 
  10.   } 
  11.   function __call($name$args) { 
  12.     foreach ($this->target as $obj) { 
  13.       $r = new ReflectionClass($obj); 
  14.       if ($method = $r->getMethod($name)) { 
  15.         if ($method->isPublic() && !$method->isAbstract()) { 
  16.           return $method->invoke($obj$args); 
  17.         } 
  18.       } 
  19.     } 
  20.   } 
  21. $obj = new ClassOneDelegator(); 
  22. $obj->callClassOne(); 
  23. ?> 

输出结果:

In Class One

可见,通过代理类ClassOneDelegator来代替ClassOne类来实现他的方法。

同样的,如下的代码也是能够运行的:

  1. <?php 
  2. class ClassOne { 
  3.   function callClassOne() { 
  4.     print "In Class One"
  5.   } 
  6. class ClassOneDelegator { 
  7.   private $targets
  8.   function addObject($obj) { 
  9.     $this->target[] = $obj
  10.   } 
  11.   function __call($name$args) { 
  12.     foreach ($this->target as $obj) { 
  13.       $r = new ReflectionClass($obj); 
  14.       if ($method = $r->getMethod($name)) { 
  15.         if ($method->isPublic() && !$method->isAbstract()) { 
  16.           return $method->invoke($obj$args); 
  17.         } //www.phpfensi.com 
  18.       } 
  19.     } 
  20.   } 
  21. $obj = new ClassOneDelegator(); 
  22. $obj->addObject(new ClassOne()); 
  23. $obj->callClassOne(); 
  24. ?> 

希望本文所述对大家的PHP程序设计有所帮助。

Tags: PHP反射机制

分享到: