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函数
Dec 06 PHP
提高php运行速度的一些小技巧分享
Jul 03 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
PHP5.3与5.5废弃与过期函数整理汇总
Jul 10 PHP
php正则preg_replace_callback函数用法实例
Jun 01 PHP
PHP单例模式详细介绍
Jul 01 PHP
简单了解PHP编程中数组的指针的使用
Nov 30 PHP
PHP实现统计在线人数功能示例
Oct 15 PHP
Laravel实现ApiToken认证请求
Oct 14 PHP
Laravel框架实现定时Task Scheduling例子
Oct 22 PHP
laravel model 两表联查示例
Oct 24 PHP
PHP读取文件或采集时解决中文乱码
Mar 09 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
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
jQuery入门之层次选择器实例简析
2015/12/11 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
angularjs 缓存的使用详解
2018/03/19 Javascript
vue cli 3.0 使用全过程解析
2018/06/14 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
python通过opencv实现批量剪切图片
2017/11/13 Python
python删除某个字符
2018/03/19 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
python 列表、字典和集合的添加和删除操作
2019/12/16 Python
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
20年同学聚会邀请函
2014/02/04 职场文书
学生个人自我鉴定
2014/03/26 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
泰山导游词
2015/02/02 职场文书
党员转正介绍人意见
2015/06/03 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书