• 技术文章 >后端开发 >php教程

    PHP反射机制用法实例_php技巧

    2016-05-16 20:36:46原创409
    本文实例讲述了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程序设计有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 反射机制 用法
    上一篇:php+MySQL判断update语句是否执行成功的方法_php技巧 下一篇:php获取URL中带#号等特殊符号参数的解决方法_php技巧
    php培训_php实战培训【立即报名】-php中文网第20期

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 分享一个有趣的php版本的扫雷!• 一个ubbcode的函数,速度很快._PHP教程• 用Php实现链结人气统计_PHP教程• 一个查看session内容的函数_PHP教程• 第1次亲密接触PHP5(2)_PHP教程
    1/1

    PHP中文网