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同时支持GIF、png、JPEG
Oct 09 PHP
php随机输出名人名言的代码
Oct 07 PHP
深入PHP异步执行的详解
Jun 03 PHP
PHP json_decode函数详细解析
Feb 17 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
php实现获取文章内容第一张图片的方法
Nov 04 PHP
PHP实现的QQ空间g_tk加密算法
Jul 09 PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 PHP
一个简单安全的PHP验证码类 附调用方法
Jun 24 PHP
mac系统下为 php 添加 pcntl 扩展
Aug 28 PHP
PHP的PDO预定义常量讲解
Jan 24 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 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
PHPThumb图片处理实例
2014/05/03 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
JS实现CheckBox复选框全选全不选功能
2015/05/06 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
React组件的三种写法总结
2017/01/12 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
Python中模拟enum枚举类型的5种方法分享
2014/11/22 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
高分子材料与工程专业推荐信
2013/12/01 职场文书
党员的自我评价范文
2014/01/02 职场文书
企业内部培训方案
2014/02/04 职场文书
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
金融事务专业求职信
2014/04/25 职场文书
企业文化演讲稿
2014/05/20 职场文书
2014年党员整改措施
2014/10/24 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书