Hallo,
$foo = new Foo;
print $foo->XR->xr("Heute ist %tag\n", array('tag' => date('D'))); # Heute ist Tue
  
Nope, das ist kein (gutes) Beispiel für ein delegate. Ich probier mal mein Glück, vielleicht hilft es jemandem  
  
~~~php
<?php  
/* Printer interface and implementations */  
  
interface iPrinter {  
    public function print();  
    public function getInfo();  
}  
  
class NormalPrinter implements iPrinter {  
    private $printer;  
  
    function __construct() {  
        $this->printer = printer_open("HP Deskjet 930c");  
    }  
  
    function __destruct() {  
        printer_close($this->printer);  
    }  
  
    public function print($content) {  
        printer_write($this->printer, $content);  
    }  
  
    public function info() {  
        return "HP Deskjet 930c";  
    }  
}  
  
class VirtualPrinter implements iPrinter {  
  
    public function print($content) {  
        echo $content;  
    }  
  
    public function info() {  
        return "A stdout printer";  
    }  
}  
  
/* */  
  
class Calculator {  
    public $printerDelegate;  
  
    function sum($a, $b) {  
        $this->print("{$a} + {$b} = {$a + $b}");  
    }  
  
    function difference($a, $b) {  
        $this->print("{$a} - {$b} = {$a - $b}");  
    }  
  
    private function print($content) {  
        if ($this->printerDelegate) {  
            $this->printerDelegate->print($content . "\n");  
        }  
    }  
}  
  
  
// Testausführung  
  
$printer = new NormalPrinter();  
  
$calculator = new Calculator();  
$calculator->printerDelegate = $printer; // Wir setzen den normalen Drucker als delegate ein  
  
$calculator->sum(2, 5); // Druckt 7 auf dem HP Deskjet aus  
$calculator->difference(10, 4); // Druckt 6 auf dem HP Deskjet aus  
  
$virtualPrinter = new VirtualPrinter();  
$calculator->printerDelegate = $virtualPrinter; // Wir ändern den Delegate zu einem virtuellen Drucker  
  
$calculator->sum(2, 5); // Der gleiche Aufruf wie oben gibt 7 auf stdout aus  
$calculator->difference(10, 4); // Der gleiche Aufruf wie oben gibt 6 auf stdout aus  
Jeena

 nicht angemeldet
 nicht angemeldet