<?php
class Personal {
public $name;
public $age;
function __construct() {
echo " __construct.. \r\n";
}
public function init() {
echo "init \r\n";
}
}
interface Work {
function doWork($personal);
}
class Student extends Personal implements Work{
public function doWork($personal) {
echo "$personal \n\r";
}
}
# 代理
class ClassDelegator {
private $target;
function __construct($targetClass) {
$this->target[] = new $targetClass();
}
function __call($name, $args) {
foreach ($this->target as $obj) {
$r = new ReflectionClass($obj);
if ($method = $r->getMethod($name)) {
if ($method->isPublic() && !$method->isAbstract()) {
return call_user_func_array(array(&$obj, $name), $args);
}
}
}
}
}
$stu = new ClassDelegator('Student');
$stu->doWork('1111', 'rerew');