代理模式是把难复制的、占资源多的、远程速度慢的对象。各自对应一个代理对象,被代理后进行本地的操作。
<?php
class Printer{
    public function doPrint(){
        echo "I can Print!";
    }
}
class TakePhoto{
    private $printer;
    public function __construct($printer){
        $this->printer=$printer;
    }
    public function doPhoto(){
        echo "I can takePhoto";
    }
    public function __call($method,$args="") {
        if (method_exists($this->printer, $method)) {
            $this->printer->$method($args);
        }
    }
    
}
$p=new Printer();
$t=new TakePhoto($p);
$t->doPrint();