Kode demonya adalah sebagai berikut:
<?php
kelas Kelas Satu {
fungsi panggilanKelasSatu() {
print “Di Kelas Satu”;
}
}
kelas ClassOneDelegator {
pribadi $target;
fungsi __konstruksi() {
$ini->target[] = ClassOne baru();
}
fungsi __panggilan($nama, $args) {
foreach ($ini->target sebagai $obj) {
$r = Kelas Refleksi baru($obj);
if ($metode = $r->getMethod($nama)) {
if ($metode->isPublic() && !$metode->isAbstrak()) {
kembalikan $metode->panggil($obj, $args);
}
}
}
}
}
$obj = ClassOneDelegator baru();
$obj->callClassOne();
?>
Hasil keluaran:
Di Kelas Satu
Dapat dilihat bahwa metodenya diimplementasikan melalui kelas proksi ClassOneDelegator, bukan kelas ClassOne.
Demikian pula kode berikut juga dapat dijalankan:
<?php
kelas Kelas Satu {
fungsi panggilanKelasSatu() {
print “Di Kelas Satu”;
}
}
kelas ClassOneDelegator {
pribadi $target;
fungsi addObject($obj) {
$ini->target[] = $obj;
}
fungsi __panggilan($nama, $args) {
foreach ($ini->target sebagai $obj) {
$r = Kelas Refleksi baru($obj);
if ($metode = $r->getMethod($nama)) {
if ($metode->isPublic() && !$metode->isAbstrak()) {
kembalikan $metode->panggil($obj, $args);
}
}
}
}
}
$obj = ClassOneDelegator baru();
$obj->addObject(ClassOne baru());
$obj->callClassOne();
?>