php-反射机制

<?php
class ClassOne {
    function callClassOne() {
        print "In Class One";
    }
}
class ClassOneDelegator {
    private $targets;
    function __construct() {
        $this->target[] = new ClassOne();
    }
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->callClassOne();
?>

输出结果:
In Class One

阅读原文

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注