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处理json时中文问题的解决方法
Apr 12 PHP
浅谈apache和nginx的rewrite的区别
Feb 22 PHP
基于php冒泡排序算法的深入理解
Jun 09 PHP
php解析json数据实例
Aug 19 PHP
PHP函数extension_loaded()用法实例
Jan 19 PHP
PHP遍历数组的三种方法及效率对比分析
Feb 12 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
Mar 19 PHP
PHPCMS手机站伪静态设置详细教程
Feb 06 PHP
php 7新特性之类型申明详解
Jun 06 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 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代码
2008/04/09 PHP
php 上传功能实例代码
2010/04/13 PHP
php实现简单爬虫的开发
2016/03/28 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
2018/06/19 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
PHP时间类完整代码实例
2021/02/26 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
2014/01/09 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
9种python web 程序的部署方式小结
2014/06/30 Python
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
酒后驾驶检讨书
2014/01/27 职场文书
幼儿园大班开学教师寄语
2014/04/03 职场文书
法制演讲稿
2014/09/10 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
孔繁森观后感
2015/06/10 职场文书
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers