手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP 反射机制实现动态代理的代码
PHP 反射机制实现动态代理的代码
摘要:演示用代码如下所示:复制代码代码如下:输出结果:InClassOne可见,通过代理类ClassOneDelegator来代替ClassOne...

演示用代码如下所示:

复制代码 代码如下:

<?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输出控制功能在简繁体转换中的应用

PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能

用libTemplate实现静态网页的生成

递归实现php数组转xml的代码分享

用PHP实现小型站点广告管理

PHP滚动日志的代码实现

php实现的mongodb操作类

PHP中预定义的6种接口介绍

我的论坛源代码(八)

精品推荐
分类导航