找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1854|回复: 0
打印 上一主题 下一主题

PHP 反射机制实现动态代理的代码

[复制链接]

2536

主题

2536

帖子

7532

积分

论坛元老

Rank: 8Rank: 8

积分
7532
跳转到指定楼层
楼主
发表于 2018-2-14 09:22:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            演示用代码如下所示:
[U]复制代码[/U] 代码如下:
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类来实现他的方法。
同样的,如下的代码也是能够运行的:
[U]复制代码[/U] 代码如下:
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的Reflection反射机制
  • PHP的反射类ReflectionClass、ReflectionMethod使用实例
  • PHP中的reflection反射机制测试例子
  • PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
  • PHP反射机制用法实例
  • PHP使用反射机制实现查找类和方法的所在位置
  • PHP基于反射机制实现插件的可插拔设计详解
  • 浅谈PHP的反射机制
  • PHP反射机制原理与用法详解
  • PHP的反射机制实例详解
  • PHP基于反射机制实现自动依赖注入的方法详解
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端