чет скушно мне было, придумал штуку, чтоб обьекты прятать 

PHP:
class Covert{
private $container;
public function __construct( $obj ){
$this->container = call_user_func_array(function( $a ){
while(true) yield $a;
}, [$obj]);
}
private function get(){
foreach($this->container as $a){
return $a;
}
}
public function __get($name){
return $this->get()->$name;
}
public function __set($name, $value){
$this->get()->$name = $value;
}
public function __call($name, $arguments){
return call_user_func_array([$this->get(), $name], $arguments);
}
}
PHP:
$a = new class {
public $a = 'hello';
public function hello( $name ){
return $this->a.' '.$name."\n";
}
};
// прячем
$c = new Covert($a);
var_dump($c);
// используем
echo $c->hello('wmix');
$c->a = 'привет';
echo $c->hello('wmix');