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 getimagesize 上传图片的长度和宽度检测代码
May 15 PHP
php购物车实现代码
Oct 10 PHP
php实现图片缩放功能类
Dec 18 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
Jun 12 PHP
30个php操作redis常用方法代码例子
Jul 05 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
PHP 使用redis简单示例分享
Mar 05 PHP
android上传图片到PHP的过程详解
Aug 03 PHP
php实现阳历阴历互转的方法
Oct 28 PHP
php创建桌面快捷方式实现方法
Dec 31 PHP
PHP文件与目录操作示例
Dec 24 PHP
PHP实现微信退款的方法示例
Mar 26 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 visitFile()遍历指定文件夹函数
2010/08/21 PHP
PHP中::、-&amp;gt;、self、$this几种操作符的区别介绍
2013/04/24 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
php单例模式的简单实现方法
2016/06/10 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
javascript offsetX与layerX区别
2010/03/12 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
WebPack基础知识详解
2017/01/16 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
js实现多图和单图上传显示
2019/12/18 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
python实现聚类算法原理
2018/02/12 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
合同专员岗位职责
2013/12/18 职场文书
《孔子拜师》教学反思
2014/02/24 职场文书
新春联欢会主持词
2014/03/24 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
五四演讲稿范文
2014/09/03 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
Python 统计序列中元素的出现频度
2022/04/26 Python