Ver Mensaje Individual
  #13 (permalink)  
Antiguo 14/04/2011, 09:16
Avatar de destor77
destor77
 
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
Respuesta: Donde incluir librerias.. modelo ¿? controlador¿?

Otra cosa que puedes hacer es crear un método en tu controlador "base" y te evitas de estar haciendo news en los controladores por ejemplo en mi framework yo tengo esto:
en mi controlador base tengo:
Código PHP:
Ver original
  1. abstract class Controller {
  2. ......
  3. /**
  4.      * Método para cargar librerías externas al core del framework
  5.      *
  6.      * @version 0.1
  7.      * @author Lucas M. sastre
  8.      * @access public
  9.      *
  10.      * @param <string> $nombre
  11.      * @return <void>
  12.      */
  13.     public function libreria($nombre) {
  14.         if(empty($nombre)) {
  15.         return false;
  16.         }
  17.  
  18.         if(is_array($nombre)) {
  19.         foreach($nombre as $plugin) {
  20.             $plugin = ucfirst($plugin);
  21.             //valido si existe el archivo de la libreria
  22.             if(!empty($plugin)) {
  23.             if(file_exists($this->Config->get('root').$this->Config->get('librerias').$plugin.'.php')) {
  24.                 //valido si no esta instanciada la clase previamente
  25.                 if(!class_exists($plugin)) {
  26.                 include_once($this->Config->get('root').$this->Config->get('librerias').$plugin.'.php');
  27.                 $this->$plugin = new $plugin();            
  28.                 }
  29.                 else {
  30.                 $this->$plugin = $plugin;              
  31.                 }
  32.  
  33.             }
  34.             else {
  35.                 $ruta = $this->Config->get('root').$this->Config->get('librerias').ucfirst($plugin).'.php';
  36.                 error_log("[".date("F j, Y, G:i")."] [Error: E_USER_NOTICE] [tipo Libreria] No se encuentra la libreria: {$plugin} en {$ruta}- \n", 3,$this->Config->get('root').'/errores.log');
  37.                
  38.                 return false;
  39.             }
  40.             }
  41.         }
  42.         }
  43.         else {
  44.         //valido si existe el archivo de la libreria
  45.         $nombre = ucfirst($nombre);
  46.         if(file_exists($this->Config->get('root').$this->Config->get('librerias').ucfirst($nombre).'.php')) {
  47.             //valido si no esta instanciada la clase previamente
  48.             if(!class_exists(ucfirst($nombre))) {
  49.             include_once($this->Config->get('root').$this->Config->get('librerias').ucfirst($nombre).'.php');
  50.             $this->$nombre = new $nombre();
  51.             }
  52.             else {
  53.             $this->$nombre = $nombre;
  54.             }
  55.  
  56.         }
  57.         else {
  58.             $ruta = $this->Config->get('root').$this->Config->get('librerias').ucfirst($nombre).'.php';
  59.             error_log("[".date("F j, Y, G:i")."] [Error: E_USER_NOTICE] [tipo Libreria]  No se encuentra la libreria: {$nombre} en {$ruta}\n", 3,$this->Config->get('root').'/errores.log');
  60.             //trigger_error("No se encuentra la libreria: {$nombre} en {$ruta}<br/>",E_USER_NOTICE);
  61.             return false;
  62.         }
  63.         }      
  64.     }
  65. .....
  66. }

y despues desde los controladores puedo hacer esto:
Código PHP:
Ver original
  1. class pep extends Controller{
  2.  public function index(){
  3.    $this->librerias('arreglos');
  4.    $this->arreglos->metodo();
  5. }
  6. //o podemos hacer esto
  7.  public function hola(){
  8.    $this->librerias(array('arreglos','email'));
  9.    $this->arreglos->metodo();
  10.    $this->email->metodo();
  11. }
  12.  
  13. }

espero que te sirva para guiarte. Salu2