<?php
class Doer {
public function doThis(){
return 'did something';
}
}
class DoerDecorator {
private $doer;
public function __construct(Doer $doer){
$this->doer = $doer;
}
public function __call($name, $arguments){
return call_user_func_array([$this->doer, $name], $arguments);
}
public function doSomethingElse(){
return 'did something else';
}
}
$do = new DoerDecorator(new Doer);
var_dump($do->doThis());
var_dump($do->doSomethingElse());