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

Cita:
Iniciado por GatorV Ver Mensaje
Así es, es totalmente correcto lo que dices.

Pues la forma es instanciando la clase donde necesites, hay muchas formas, la forma más correcta es la inyección de dependencias, es un patrón de desarrollo de Software para POO, que te permite en lugar de hardcodear la dependencia en la clase, inyectarla desde fuera de la clase para que sea usada, por ejemplo:

// recomendado
Código PHP:
Ver original
  1. class User {
  2.        private $db;
  3.  
  4.        public function setDb(DBInterface $db) { $this->db = $db; }
  5.        public function getDb() { return $this->db; }
  6. }
  7.  
  8. // en otro file donde hagas el setup
  9. $db = new Db(/* datos */);
  10. $user = new User();
  11. $user->setDb($db);
  12.  
  13. // Donde uses $user
  14. $user->algo();

Todo eso se puede automatizar usando un Dependency Container que te permite "auto conectar" los objetos dependiendo de un registro de dependencias, es la forma más correcta actualmente para manejar las dependencias en Software.

Saludos.
Gracias por contestar. Imagino que tengo que realizar el "include" de las clases que utilizaría en el otro archivo, donde definiría la bd. Si fuera el caso, imagino que si tuviera muchas clases el consumo sería grande. He tenido varios percances, y por eso si tuvieras un poco de tiempo para dedicarme a mí y a los que también tengan esta duda, ¿podrías crear los tres archivos para saber cómo quedaría? Es decir, dos clases (básicas, aunque solo muestre Hola mundo) y un archivo de configuración también básico (en mi caso uso mysqli), para saber dónde iría el "include" siendo más de una clase y cómo se gestionaría, ya que hasta ahora yo siempre había usado globales y así de pronto instanciarlas de una forma que desconocía, me viene desconcertando. De esta forma me guiaría y ya podría realizarlo con otras clases que tuviera. Gracias por adelantado, si no pudieras hoy, no importa, pero me gustaría saberlo.