estoy intentando hacer un cargador de "plugins" al estilo codeigniter para lo cual en mi controlador base hago lo siguiente:
Código PHP:
Ver original
abstract class Controller { protected $Config; public function __construct() { //creo una instancia de la configuración $this->Config = Config::singleton(); } public function libreria($nombre) { return false; } foreach($nombre as $plugin) { //valido si existe el archivo de la libreria if(file_exists($this->Config->get('root').$this->Config->get('librerias').ucfirst($plugin).'.php')) { //valido si no esta instanciada la clase previamente $this->Librerias[$plugin] = new $plugin(); } else { $this->Librerias[$plugin] = $plugin; } } else { return false; } } } } else { //valido si existe el archivo de la libreria if(file_exists($this->Config->get('root').$this->Config->get('librerias').ucfirst($nombre).'.php')) { //valido si no esta instanciada la clase previamente $this->Librerias[$nombre] = new $nombre(); } else { $this->Librerias[$nombre] =$nombre; } } else { return false; } } return $this->Librerias; } }
hasta ahi todo de maravillas, si yo despues en algun controlador quiero usarlo uso algo asi:
Código PHP:
Ver original
public function index() { if(!$this->Session->get('admin') || $this->Session->get('admin')=='admin') { $data['mensaje']['mensaje']="No estas logueado"; $data['mensaje']['tipo']="attention"; $this->Vistas->show('login.html',$data); } else { $data['breadCrumb']=$this->BreadCrumb->listarBreadCrumb($_REQUEST); $data['fila']=$this->Librerias['prueba']->hola(); $this->Vistas->show('index.html',$data); }
y me duelve en $data['fila'] "Hola mundo".
Bien mi consulta es como puedo hacer para que en vez de tener que llamar a las "librerias" de esta forma:
Código PHP:
Ver original
$this->Librerias['prueba']->hola();
pueda llamarlas asi:
Código PHP:
Ver original
$this->prueba->hola();
Espero que se haya entendido mi duda y desde ya muchas gracias