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 相关文章推荐
用libTemplate实现静态网页的生成
Oct 09 PHP
PHP实现分页的一个示例
Oct 09 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
使用PHP curl模拟浏览器抓取网站信息
Oct 28 PHP
php解决约瑟夫环示例
Apr 09 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
PHP+MySQL删除操作实例
Jan 21 PHP
php判断linux下程序问题实例
Jul 09 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
PHP实现打包下载文件的方法示例
Oct 07 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 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
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
百度地图api如何使用
2015/08/03 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
Vue实现双向数据绑定
2017/05/03 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
js动态添加带圆圈序号列表的实例代码
2021/02/18 Javascript
在python 不同时区之间的差值与转换方法
2019/01/14 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
美国时尚在线:Showpo
2017/09/08 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
竞聘演讲稿范文
2014/01/12 职场文书
小学毕业寄语大全
2014/04/03 职场文书
投资建议书模板
2014/05/12 职场文书
治庸问责心得体会
2014/09/12 职场文书
个人收入证明范本
2014/09/18 职场文书
收银员岗位职责范本
2015/04/07 职场文书
运动会通讯稿100字
2015/07/20 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书