演示用代码如下所示
php
classClassOne{
functioncallClassOne(){
print"InClassOne";
}
}
classClassOneDelegator{
private$targets;
function__construct(){
$this->target[]=newClassOne();
}
function__call($name,$args){
foreach($this->targetas$obj){
$r=newReflectionClass($obj);
if($method=$r->getMethod($name)){
if($method->isPublic()&&!$method->isAbstract()){
return$method->invoke($obj,$args);
}
}
}
}
}
$obj=newClassOneDelegator();
$obj->callClassOne();
?>
输出结果:
In Class One
可见,通过代理类ClassOneDelegator来代替ClassOne类来实现他的方法。
专为中小型企业定制的网络办公软件,富有竞争力的十大特性: 1、独创 web服务器、数据库和应用程序全部自动傻瓜安装,建立企业信息中枢 只需3分钟。 2、客户机无需安装专用软件,使用浏览器即可实现全球办公。 3、集成Internet邮件管理组件,提供web方式的远程邮件服务。 4、集成语音会议组件,节省长途话费开支。 5、集成手机短信组件,重要信息可直接发送到员工手机。 6、集成网络硬
同样的,如下的代码也是能够运行的:
classClassOne{
functioncallClassOne(){
print"InClassOne";
}
}
classClassOneDelegator{
private$targets;
functionaddObject($obj){
$this->target[]=$obj;
}
function__call($name,$args){
foreach($this->targetas$obj){
$r=newReflectionClass($obj);
if($method=$r->getMethod($name)){
if($method->isPublic()&&!$method->isAbstract()){
return$method->invoke($obj,$args);
}
}
}
}
}
$obj=newClassOneDelegator();
$obj->addObject(newClassOne());
$obj->callClassOne();
?>










