Hola, perdón si no me detengo a leer todo el código pero, viendo el objetivo que se quiere conseguir, pregunto: ¿no te sirve el método mágico __get()?. Con ello accedes al índice del arreglo y regresas la instancia de la que haces referencia.
Ejemplo consiguiendo lo mismo (aunque en la práctica difieran. Repito: no veo con detenimiento el código)
Código PHP:
Ver original<?php
class Bar
{
public function metodoBar()
{
echo 'Método de Bar';
}
}
class Foo
{
protected $_objetos = array();
public function __construct()
{
$this->_objetos['prueba'] = new Bar();
}
public function __get($instancia)
{
return $this->_objetos[$instancia];
}
public function imprimeBar()
{
$this->prueba->metodoBar();
// En lugar de
// $this->_objetos['prueba']->metodoBar();
}
}
$foo = new Foo();
$foo->imprimeBar();