Hola,
estoy intentando hacer un cargador de "plugins" al estilo codeigniter para lo cual en mi controlador base hago lo siguiente:
Código PHP:
Ver originalabstract class Controller {
protected $Librerias = array(); 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
include_once($this->Config->get('root').$this->Config->get('librerias').ucfirst($plugin).'.php'); $this->Librerias[$plugin] = new $plugin();
}
else {
$this->Librerias[$plugin] = $plugin;
}
}
else {
$ruta = $this->Config->get('root').$this->Config->get('librerias').ucfirst($plugin).'.php'; error_log("No se encuentra la libreria: {$plugin} en {$ruta}- ".date("F j, Y, G:i")."\n", 3,$this->Config->get('root').'/errores.log'); trigger_error("No se encuentra la libreria: {$plugin} en {$ruta}<br/>",E_USER_NOTICE); 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
include_once($this->Config->get('root').$this->Config->get('librerias').ucfirst($nombre).'.php'); $this->Librerias[$nombre] = new $nombre();
}
else {
$this->Librerias[$nombre] =$nombre;
}
}
else {
$ruta = $this->Config->get('root').$this->Config->get('librerias').ucfirst($nombre).'.php'; error_log("No se encuentra la libreria: {$nombre} en {$ruta} - ".date("F j, Y, G:i")."\n", 3,$this->Config->get('root').'/errores.log'); trigger_error("No se encuentra la libreria: {$nombre} en {$ruta}<br/>",E_USER_NOTICE); 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 originalpublic 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:
pueda llamarlas asi:
Espero que se haya entendido mi duda y desde ya muchas gracias