欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【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类来实现他的方法。
同样的,如下的代码也是能够运行的:
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 反射机制实现动态代理的代码,下面是编辑为你推荐的有价值的用户互动:
相关问题:java动态代理实现步骤?
答:您好,提问者: 1、可以使用apache开发的HttpClient.jar来实现。 2、如果纯Java代码,首先创建一个Proxy类来进行指定协议,比如:Proxy.HTTP,构造方法请见JDK API文档,另外指定一个SocketAddress的ip和端口,一般http端口为80。 接下来就是访问... >>详细
相关问题:java动态代理怎样实现?
答:在目前的Java开发包中包含了对动态代理的支持,但是其实现只支持对接口的的实现。 其实现主要通过是java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口。 Proxy类主要用来获取动态代理对象,InvocationHandler接口用来约束调... >>详细
相关问题:谁有关于JAVA中动态代理与反射机制的资料
答:麻烦你上www.javaeye.com搜一下AOP >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
