使用reflection执行授权模式
时间:2010-07-17 来源:qgymje
print_r(ReflectionClass::export('ClassOne'));
Class [ <user> class ClassOne ] {
@@ E:\xampp\htdocs\test\reflection.php 2-8
- Constants [0] {
}
- Static properties [0] {
}
- Static methods [0] {
}
- Properties [0] {
}
- Methods [1] {
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();
相关阅读 更多 +










