PHP反射机制用法实例

 2025-01-15  阅读 491  评论 8  点赞 127

摘要:本文实例讲述了php反射机制的用法,分享给大家供大家参考之用。具体方法如下: 演示示例代码如下所示: target[] = new classone(); } function __call($name, $args) { foreach ($this->target as $obj) { $r = new reflectionclass($obj); if ($method = $r->getmethod($na

本文实例讲述了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程序设计有所帮助。


标签:phpphp教程

评论列表:

显示更多评论

发表评论:

管理员

承接各种程序开发,外贸网站代运营,外贸网站建设等项目
  • 内容2460
  • 积分67666
  • 金币86666

Copyright © 2024 LS'Blog-保定PHP程序员老宋个人博客 Inc. 保留所有权利。 Powered by LS'blog 3.0.3

页面耗时0.0284秒, 内存占用1.94 MB, 访问数据库30次

冀ICP备19034377号