<?php
class A {
protected $val = 'test';
public function get() {
return $this->val;
}
public function set($val) {
return $this->val = $val;
}
}
class B {
protected $Obj;
public function __construct(A $obj) {
$this->Obj = $obj;
}
public function getObj() {
return $this->Obj;
}
}
class C {
protected $array;
public function __construct($array) {
$this->array = $array;
}
public function getArray($item) {
return $this->array[$item];
}
}
$a = new A();
$arr = array('obj' => $a);
$b = new B($a);
$c = new C($arr);
echo 'Before', PHP_EOL, 'Object : ', $a->get(), PHP_EOL, 'Object in object : ', $b->getObj()->get(), PHP_EOL, 'Object in array : ', $arr['obj']->get(), PHP_EOL, 'Object in array in object : ', $c->getArray('obj')->get(), PHP_EOL;
$a->set('modified');
echo 'After', PHP_EOL, 'Object : ', $a->get(), PHP_EOL, 'Object in object : ', $b->getObj()->get(), PHP_EOL, 'Object in array : ', $arr['obj']->get(), PHP_EOL, 'Object in array in object : ', $c->getArray('obj')->get(), PHP_EOL;