qgymje 发表于 2013-2-7 01:52:54

使用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]
查看完整版本: 使用reflection执行授权模式