当前位置:首页 > 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. } 
  7. class ClassOneDelegator { 
  8.   private $targets; 
  9.   function __construct() { 
  10.     $this->target[] = new ClassOne(); 
  11.   } 
  12.   function __call($name, $args) { 
  13.     foreach ($this->target as $obj) { 
  14.       $r = new ReflectionClass($obj); 
  15.       if ($method = $r->getMethod($name)) { 
  16.         if ($method->isPublic() && !$method->isAbstract()) { 
  17.           return $method->invoke($obj, $args); 
  18.         } 
  19.       } 
  20.     } 
  21.   } 
  22. } 
  23. $obj = new ClassOneDelegator(); 
  24. $obj->callClassOne(); 
  25. ?> 

输出结果:

In Class One

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

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

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

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

Tags: PHP反射机制

分享到: