栏目导航
热点推荐
- IIS6.0平台下PHP最佳配置方法
- 实用的PHP编程技巧
- php中防盗链使用.htaccess
- 在PHP中全面阻止SQL注入式攻击之
- PHP生成HTML的技术原理
- 新手学堂:PHP服务器变量设置的
- 解决php存取mysql 4.1乱码问题
- PHP 开发中的中文编码问题
- 简单学习php遇到的主要问题
- PHP网站开发遇到的中文编码
- PHP自动适应范围的页码分页程序
- PHP教程:PHP编码书写规范
阅览排行
PHP 反射机制实现动态代理的代码
2008-12-22 来源:www.jb51.net 作者:编辑整理 我要投搞
演示用代码如下所示:
以下为引用的内容: 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类来实现他的方法。 同样的,如下的代码也是能够运行的: 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中函数内引用全局变量的方法 下一篇:没有了