Ver Mensaje Individual
  #11 (permalink)  
Antiguo 12/02/2010, 00:43
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Intentando entender la clase mysql

Cita:
Iniciado por GatorV Ver Mensaje
No, me refiero a esto:
Código PHP:
Ver original
  1. public static function getInstance($servidor = '', $user = '', $password = '', $db = ''){
  2.         if (is_null (self::$_singleton)) {
  3.             self::$_singleton = new DataBase($servidor, $user, $password, $db);
  4.         }
  5.         return self::$_singleton;
  6.     }

Así lo puedes llamar la primera vez:
Código PHP:
Ver original
  1. $conn = DB::getInstance($server, $user, $password, $db);
  2. // Mas adelante
  3. $conn = DB::getInstance();

Saludos.
Pero si lo haces así, la primera vez guay porque le pasas los parámetros y gracias al constructor te conectará con la base de datos automáticamente, pero con la segunda llamada que consigues? si no le pasas los parámetros no podrá conectarse a la base de datos...

Si he entendido bien el patron singleton haría mas o menos así:

Con la primera linea mira si existe el recurso sino existe ninguna instancia abierta la crea por primera vez, trabajas con ella, etc... y si vuelves hacer la misma llamada pasandole los mismos datos, comprueba que ya existe una instancia que se llama así, por lo que la aprovechará. Ahora bien, si los datos de conexión a la hora de llamar a la nueva instancia han cambiado entiendo que te crea una segunda instancia diferente no?

Que consigues llamando a la instancia con la segunda forma, sin pasarle los datos? quieres decir que es capaz de detectar que existe una instancia lanzada y por eso no hace falta pasarle los datos? en ese caso que sentido lanzar esa linea, porque no utilizas algun metodo de la clase para hacer cosas...

No acabo de entender la utilidad de volverla a llamar sin opciones...

Gracias!