class PersonWriter{
public function writeName(Persion $p){
print $p->getName()."\n";
}
public function writeAge(Persion $p){
print $p->getAge()."\n";
}
}
|
class Person {
private $writer;
function __construct(PersonWriter $writer;){
$this->writer = $writer;
}
function __call($methodname,$args){
if(method_exists($this->writer,$methodname)){
return $this->writer->$methodname($this);
}
}
//...
}
|
$person = new Person(new PersonWriter()); $person->writeName(); |