Class Php

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() . '.';
?>