当前位置:首页 > PHP教程 > PHP高级教程

PHP反射机制用法实例

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

演示示例代码如下所示:

<?php
class classone {
  function callclassone() {
    print "in class one";
  }
}
class classonedelegator {
  private $targets;
  function __construct() {
    $this->target[] = new classone();
  }
  function __call($name, $args) {
    foreach ($this->target as $obj) {
      $r = new reflectionclass($obj);
      if ($method = $r->getmethod($name)) {
        if ($method->ispublic() && !$method->isabstract()) {
          return $method->invoke($obj, $args);
        }
      }
    }
  }
}
$obj = new classonedelegator();
$obj->callclassone();
?>

输出结果:

in class one

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

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

<?php
class classone {
  function callclassone() {
    print "in class one";
  }
}
class classonedelegator {
  private $targets;
  function addobject($obj) {
    $this->target[] = $obj;
  }
  function __call($name, $args) {
    foreach ($this->target as $obj) {
      $r = new reflectionclass($obj);
      if ($method = $r->getmethod($name)) {
        if ($method->ispublic() && !$method->isabstract()) {
          return $method->invoke($obj, $args);
        }
      }
    }
  }
}
$obj = new classonedelegator();
$obj->addobject(new classone());
$obj->callclassone();
?>

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


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!