class A
{
public $name = 'a';
private $value = null;
public function __construct()
{
$this->value = 1;
}
}
class B
{
public $name = 'b';
private $differentValue = null;
public function __construct()
{
$this->differentValue = 1;
}
}
class CD
{
private $parent = null;
public function __construct($parent)
{
$this->parent = new $parent;
}
public function __call($name, $params)
{
if ( is_callable(array($this->parent, $name)) ) {
return call_user_func_array(array($this->parent, $name), $params);
} else {
throw new Exception('Method "'.$name.'" should be callable.');
}
}
public function __get($property_name){
if(isset($this->$property_name)) {
return $this->$property_name;
} elseif (isset($this->parent->$property_name)) {
return $this->parent->$property_name;
} else {
return null;
}
}
public function display()
{
echo "OK";
}
}
$c = new CD(new B);
var_dump($c->name);