zl程序教程

您现在的位置是:首页 >  后端

当前栏目

PHP反射机制用法实例

实例PHP反射 用法 机制
2023-06-13 09:15:44 时间

本文实例讲述了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程序设计有所帮助。