* */ class GenericProxyWeather { protected $_subject; public function __construct($subject) { $this->_subject = $subject; } public function __call($method, $args) { return call_user_func_array(array($this->_subject, $method), $args); } } class Client { static function main() { $proxy = new ProxyWeather(); // $report = $proxy->display('beijing'); } static function Genericmain() { $proxy = new GenericProxyWeather(new RealWeather()); // $report = $proxy->display('beijing'); } } header('Content-type:text/html;charset=UTF-8'); Client::main(); Client::Genericmain();