PHP反射机制用法实例


Posted in PHP onAugust 28, 2014

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

PHP 相关文章推荐
PHP处理excel cvs表格的方法实例介绍
May 13 PHP
PHP的构造方法,析构方法和this关键字详细介绍
Oct 22 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
Dec 25 PHP
取得单条网站评论以数组形式进行输出
Jul 28 PHP
html静态页面调用php文件的方法
Nov 13 PHP
最新最全PHP生成制作验证码代码详解(推荐)
Jun 12 PHP
深入浅析Yii admin的权限控制
Aug 31 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
Laravel框架基于ajax实现二级联动功能示例
Jan 17 PHP
PHP SESSION机制的理解与实例
Mar 22 PHP
TP5框架实现的数据库备份功能示例
Apr 05 PHP
PHP实现本地图片转base64格式并上传
May 29 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 #PHP
PHP对象递归引用造成内存泄漏分析
Aug 28 #PHP
PHP中cookie和session的区别实例分析
Aug 28 #PHP
PHP实现视频文件上传完整实例
Aug 28 #PHP
PHP获取表单所有复选框的值的方法
Aug 28 #PHP
PHP中echo和print的区别
Aug 28 #PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
Aug 28 #PHP
You might like
php smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
php替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
php进程间通讯实例分析
2016/07/11 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
微信小程序 数据绑定详解及实例
2016/10/25 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
[43:47]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第一场 12.09
2020/12/11 DOTA
python基于windows平台锁定键盘输入的方法
2015/03/05 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
利用Python如何生成便签图片详解
2018/07/09 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
Python绘制动态水球图过程详解
2020/06/03 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
Java面试题及答案
2012/09/08 面试题
中介公司区域经理岗位职责范本
2014/03/02 职场文书
厨房管理计划书
2014/04/27 职场文书
供应链金融服务方案
2014/05/25 职场文书
2016年教代会开幕词
2016/03/04 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
Django migrate报错的解决方案
2021/05/20 Python