使用reflection执行授权模式
print_r(ReflectionClass::export('ClassOne'));Class [ <user> class ClassOne ] {
@@ E:\xampp\htdocs\test\reflection.php 2-8
- Constants {
}
- Static properties {
}
- Static methods {
}
- Properties {
}
- Methods {
Method [ <user> public method callClassOne ] {
@@ E:\xampp\htdocs\test\reflection.php 4 - 7
}
}
}
class ClassOne{function callClassOne(){print "In ClassOne\n";}}class ClassTwo{function callClassTwo(){print "In ClassTwo\n";}}class ClassOneDelegator{private $target;function __construct(){$this->target[] = new ClassOne();}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 ClassTwo());$obj->callClassOne();$obj->callClassTwo();
页:
[1]