รหัสสาธิตมีดังนี้:
<?php
คลาสคลาสหนึ่ง {
ฟังก์ชั่น callClassOne() {
พิมพ์ "ในชั้นหนึ่ง";
-
-
คลาส ClassOneDelegator {
เป้าหมาย $ ส่วนตัว;
ฟังก์ชั่น __ สร้าง () {
$this->target[] = ClassOne ใหม่();
-
ฟังก์ชั่น __call($ชื่อ, $args) {
foreach ($this->เป้าหมายเป็น $obj) {
$r = ReflectionClass ใหม่($obj);
ถ้า ($method = $r->getMethod($name)) {
ถ้า ($method->isPublic() && !$method->isAbstract()) {
กลับ $method->วิงวอน($obj, $args);
-
-
-
-
-
$obj = ClassOneDelegator ใหม่();
$obj->callClassOne();
-
ผลลัพธ์ที่ได้:
ในชั้นเรียนที่หนึ่ง
จะเห็นได้ว่าวิธีการของเขาถูกนำไปใช้ผ่านคลาสพร็อกซี ClassOneDelegator แทนที่จะเป็นคลาส ClassOne
ในทำนองเดียวกัน โค้ดต่อไปนี้สามารถเรียกใช้ได้:
<?php
คลาสคลาสหนึ่ง {
ฟังก์ชั่น callClassOne() {
พิมพ์ "ในชั้นหนึ่ง";
-
-
คลาส ClassOneDelegator {
เป้าหมาย $ ส่วนตัว;
ฟังก์ชั่น addObject($obj) {
$นี่->เป้าหมาย[] = $obj;
-
ฟังก์ชั่น __call($ชื่อ, $args) {
foreach ($this->เป้าหมายเป็น $obj) {
$r = ReflectionClass ใหม่($obj);
ถ้า ($method = $r->getMethod($name)) {
ถ้า ($method->isPublic() && !$method->isAbstract()) {
กลับ $method->วิงวอน($obj, $args);
-
-
-
-
-
$obj = ClassOneDelegator ใหม่();
$obj->addObject(คลาสหนึ่งใหม่());
$obj->callClassOne();
-