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-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
Aug 15 PHP
TMDPHP 模板引擎使用教程
Mar 13 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
PHP获取服务器端信息的方法
Nov 28 PHP
详解PHP中的Traits
Jul 29 PHP
PHP仿微信多图片预览上传实例代码
Sep 13 PHP
PHP对象实例化单例方法
Jan 19 PHP
PHP 配置后台登录以及模板引入
Jan 24 PHP
Laravel中10个有用的用法小结
May 06 PHP
PHP 7.4 新语法之箭头函数实例详解
May 09 PHP
php数组遍历类与用法示例
May 24 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中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
Angularjs CURD 详解及实例代码
2016/09/14 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
vue实现表格增删改查效果的实例代码
2017/07/18 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
详解JS数值Number类型
2018/02/07 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
2018/08/08 jQuery
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
Nuxt v-bind绑定img src不显示的解决
2019/12/05 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
获取Pytorch中间某一层权重或者特征的例子
2019/08/17 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
sort命令的作用和用法
2013/08/25 面试题
大学生实习期自我评价范文
2013/10/03 职场文书
大学生职业生涯规划书模版
2013/12/30 职场文书
会计专业自荐信
2014/06/03 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
2015年秋季新学期寄语
2015/03/25 职场文书
防溺水主题班会教案
2015/08/12 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python