Cloning an aggregated class
<?
class Address {
protected $city;
protected $country;
public function setCity($city) { $this->city = $city; }
public function getCity() { return $this->city; }
public function setCountry($country) { $this->country = $country; }
public function getCountry() { return $this-> country;}
}
class Person {
protected $name;
protected $address;
public function __construct() { $this->address = new Address; }
public function setName($name) { $this->name = $name; }
public function getName() { return $this->name; }
public function __call($method, $arguments) {
if (method_exists($this->address, $method)) {
return call_user_func_array( array($this->address, $method), $arguments);
}
}
}
$a = new Person;
$a->setName('A');
$a->setCity('B');
$z = clone $a;
$z->setName('Z');
$z->setCity('T');
print $a->getName() . ' lives in ' . $a->getCity() . '.';
print $z->getName() . ' lives in ' . $z->getCity() . '.';
?>
Related examples in the same category