Ver Mensaje Individual
  #14 (permalink)  
Antiguo 13/02/2010, 04:57
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 _ssx Ver Mensaje



Solo como dice maturano date el tiempo de entender el getInstance en el if esta todo lo que necesitas entender.

Código PHP:
public static function getInstance($servidor$user$password$db){
        if (
is_null (self::$_singleton)) {
            
self::$_singleton = new DataBase($servidor$user$password$db);
        }
        return 
self::$_singleton;
    } 
Sí he entendido el significado de singleton, pero mi última duda era (si queréis cojo el ejemplo de GatorV)

Código PHP:
Ver original
  1. class Singleton {
  2.        private static $_instance;
  3.        private $_var;
  4.  
  5.        public static function getInstance($var = '')
  6.        {
  7.                if (self::$_instance == null ) {
  8.                       self::$_instance = new self($var);
  9.                }
  10.  
  11.                return self::$_instance;
  12.        }
  13.  
  14.        private function __construct($var = '')
  15.        {
  16.               $this->_var = $var;
  17.        }
  18.  
  19.        public function printVar()
  20.        {
  21.                echo $this->_var;
  22.        }
  23. }
  24.  
  25. $obj = Singleton::getInstance("hola");
  26. $obj->printVar(); // imprime hola
  27.  
  28. $obj2 = Singleton::getInstance();
  29. $obj2->printVar(); // imprime hola
  30.  
  31. $obj3 = Singleton::getInstance("bye");
  32. $obj3->printVar(); // sigue imprimiendo hola


En los 3 casos imprime hola porque fue como se llamo la primera vez. Esto es lo mismo si la primera vez te conectas a una base de datos especifica.
Mi duda era que pasa si quieres conectarte a otra base de datos diferente (o en el ej. de GatorV, que pasa si quieres te te escriba bye en lugar de hola?)

Esa era mi duda mi reflexión del último post... como dijo a la clase que lo que estoy llamando es una nueva conexión a otra base de datos. Por que me extrañaría que no se pudiera. ¿Se haría con un metodo? ¿No habría dos conexiones abiertas a dos base de datos distintas?

Salu2!