Ver Mensaje Individual
  #16 (permalink)  
Antiguo 28/06/2012, 10:12
salomon26
 
Fecha de Ingreso: mayo-2012
Ubicación: En mi casa
Mensajes: 22
Antigüedad: 12 años
Puntos: 1
Respuesta: ¿Desaconsejado el uso de variables globales?

Cita:
Iniciado por GatorV Ver Mensaje
Claro que son de PHP, los dos que te dejé, y ya te dije más arriba, debes de usar un Autoloader para evitar los includes, realmente haces que repita lo que te digo, puedes usar un Autoloader de los que hay o el que trae PHP de forma nativa: [URL="http://mx2.php.net/manual/en/function.spl-autoload-register.php"]spl_autoload_register[/URL]

Eso hace que te evites hacer un include() antes de hacer el new Class, ya que el autoloader lo que hace es eso, cargar las clases que no han sido definidas.

Cuando programes en PHPOO, sea o no con MVC, debes de usar siempre un Autoloader para evitar estar haciendo includes.

Saludos.
Entonces poniendo algo como:

Código PHP:
Ver original
  1. spl_autoload_register(function ($clase) {
  2.     include(dirname(__FILE__) . '/classes/' . $clase . '.php');
  3. });

Y luego dentro de la clase lo que me comentaste ayer:

Código PHP:
Ver original
  1. Class User
  2. {
  3.     private $db;
  4.    
  5.     public function setDB(DBInterface $db)
  6.     {
  7.         $this->db = $db;
  8.     }
  9.     public function getDb()
  10.     {
  11.         return $this->db;
  12.     }
  13. }

¿Y si quiero agregar más clases en esa misma?

Por ejemplo, si quiero usar dentro de la clase user, las configuraciones que sería la clase core y una clase de seguridad por ejemplo. ¿Cómo sería? Poner private $core (que sería "$core = new Core" en el archivo donde se cargarían) y lo mismo para la otra de seguridad. Pero ¿ya podría usar $core y $security en las funciones de la clase user sin las globales o habría que hacer algo más? Aunque creo que esto es sólo para evitar todos includes, pero me he liado un poco.

Otra duda más, ¿spl_autoload_register() al cargar todas las clases que se encuentren no consumiría más que algunos includes dependiendo de un "if" (si voy al registro, cargo las del registro y no una clase de administración, por ejemplo)?


Gracias.

Última edición por salomon26; 28/06/2012 a las 10:32