PHP反射机制用法实例
本文实例讲述了PHP反射机制的用法,分享给大家供大家参考之用。具体方法如下:
演示示例代码如下所示:
<?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(); ?>
输出结果:
InClassOne
可见,通过代理类ClassOneDelegator来代替ClassOne类来实现他的方法。
同样的,如下的代码也是能够运行的:
<?php 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(); ?>
希望本文所述对大家的PHP程序设计有所帮助。