데모 코드는 다음과 같습니다:
<?php
클래스 클래스원 {
함수 호출ClassOne() {
"클래스 1에서"를 인쇄하십시오.
}
}
클래스 ClassOneDelegator {
비공개 $targets;
함수 __construct() {
$this->target[] = 새로운 ClassOne();
}
함수 __call($name, $args) {
foreach ($this->$obj로 대상 지정) {
$r = 새로운 ReflectionClass($obj);
if ($method = $r->getMethod($name)) {
if ($method->isPublic() && !$method->isAbstract()) {
$method->invoke($obj, $args)를 반환합니다.
}
}
}
}
}
$obj = 새로운 ClassOneDelegator();
$obj->callClassOne();
?>
출력 결과:
1학년
그의 메소드는 ClassOne 클래스가 아닌 Proxy 클래스인 ClassOneDelegator를 통해 구현된 것을 볼 수 있다.
마찬가지로 다음 코드도 실행할 수 있습니다.
<?php
클래스 클래스원 {
함수 호출ClassOne() {
"클래스 1에서"를 인쇄하십시오;
}
}
클래스 ClassOneDelegator {
비공개 $targets;
함수 addObject($obj) {
$this->target[] = $obj;
}
함수 __call($name, $args) {
foreach ($this->$obj로 대상 지정) {
$r = 새로운 ReflectionClass($obj);
if ($method = $r->getMethod($name)) {
if ($method->isPublic() && !$method->isAbstract()) {
$method->invoke($obj, $args)를 반환합니다.
}
}
}
}
}
$obj = 새로운 ClassOneDelegator();
$obj->addObject(new ClassOne());
$obj->callClassOne();
?>