Foros del Web » Programando para Internet » Javascript » Frameworks JS »

metodo singleton con mysql

Estas en el tema de metodo singleton con mysql en el foro de Frameworks JS en Foros del Web. hola estoy haciendo una web y para facilitarme las cosas hice esta clase //FUNCION QUE RETORNA UNA CONEXION A LA BASE DE DATOS function conexion(){ ...
  #1 (permalink)  
Antiguo 28/08/2011, 15:07
 
Fecha de Ingreso: agosto-2011
Ubicación: Argentina
Mensajes: 31
Antigüedad: 12 años, 8 meses
Puntos: 1
metodo singleton con mysql

hola estoy haciendo una web y para facilitarme las cosas hice esta clase
//FUNCION QUE RETORNA UNA CONEXION A LA BASE DE DATOS
function conexion(){
$_conexion = mysql_connect("$host", "$user", "$pass");
mysql_select_db("$DB", $_conexion);
return $_conexion;
}

//CLASE QUE PERMITE REALIZAR CONSULTAS DE MANERA FACIL
class consulta{
private $conexion;

public function __construct(){ //EL CONSTRUCTOR OBTIENE UNA CONEXION
$this->conexion = conexion();
}

public function __destruct(){
mysql_close($this->conexion);
}

public function consultar($_consulta){ //ESTE METODO RETORNA UN RESULTSET DE UNA CONSULTA QUE SE PASA COMO PARAMETRO
return mysql_query($_consulta, $this->conexion);
}
}


estaba queriendo usar el metodo singleton para lograr que se pueda instanciar una sola vez e hice algo asi

//CLASE QUE PERMITE REALIZAR CONSULTAS DE MANERA FACIL
class consulta{
static private $instancia = NULL;

private $conexion;

public function __construct(){}

public function __clone(){
return false;
}

public function get_instancia(){
if (self::$instancia == NULL){
self::$instancia = new consulta();
self::$instancia->$conexion = conexion();
}
return self::$instancia;
}

public function __destruct(){
mysql_close($this->conexion);
}

public function consultar($_consulta){ //ESTE METODO RETORNA UN RESULTSET DE UNA CONSULTA QUE SE PASA COMO PARAMETRO
return mysql_query($_consulta, $this->conexion);
}
}


mi problema es que no se como asignarle la conexion al momento de crear la instancia, probe poner el atributo conexion como public, pero no funciona
tengo que crear un metodo conectar o puedo iniciar la variable al instanciar la clase??

como ceran soy nuevo programando en php sobre todo phpoo
desde ya muchas gracias
  #2 (permalink)  
Antiguo 28/08/2011, 15:27
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: metodo singleton con mysql

Código PHP:
Ver original
  1. class Ejemplo {
  2.     private $conexion;
  3.  
  4.     public function __construct($conexion){
  5.         $this->conexion = $conexion
  6.     }
  7. }
  8. $con = mysql_connect('host', 'user', 'pass);
  9. $foo = new Conexion($con);

Igual no sé por que usas una función aparte si tienes la class Puedes hacer así:
Código PHP:
Ver original
  1. class Ejemplo {
  2.     private $conexion
  3.    
  4.     public function __construct($host, $user, $pass, $db) {
  5.         $con = mysql_connect($host, $user, $pass);
  6.         mysql_select_db($db);
  7.         $this->conexion = $con;
  8.         return true;
  9.     }
  10. }
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 28/08/2011, 15:41
 
Fecha de Ingreso: agosto-2011
Ubicación: Argentina
Mensajes: 31
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: metodo singleton con mysql

Cita:
Iniciado por Sourcegeek Ver Mensaje
Código PHP:
Ver original
  1. class Ejemplo {
  2.     private $conexion;
  3.  
  4.     public function __construct($conexion){
  5.         $this->conexion = $conexion
  6.     }
  7. }
  8. $con = mysql_connect('host', 'user', 'pass);
  9. $foo = new Conexion($con);

Igual no sé por que usas una función aparte si tienes la class Puedes hacer así:
Código PHP:
Ver original
  1. class Ejemplo {
  2.     private $conexion
  3.    
  4.     public function __construct($host, $user, $pass, $db) {
  5.         $con = mysql_connect($host, $user, $pass);
  6.         mysql_select_db($db);
  7.         $this->conexion = $con;
  8.         return true;
  9.     }
  10. }
Claro, pero lo que yo quiero es que la clase se pueda instanciar solo una vez, por eso decia lo del metodo singleton, o si no se podrian iniciar multiples conexiones a la BD en el mismo script, mientras que con una es suficiente
En lo de la funcion tienes razon, pero me gusta tener separado la funcion de conexion de la clase que realiza la consulta
De todas formas ya lo solucione creando un metodo publico conectar
Saludos
  #4 (permalink)  
Antiguo 28/08/2011, 15:45
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: metodo singleton con mysql

Debes hacer la clase Conexion un Singleton, sino, ¿que te evita instanciar la clase Conexion directamente?
  #5 (permalink)  
Antiguo 28/08/2011, 15:47
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: metodo singleton con mysql

Nunca voy a comprender la manía con Singleton, pero en fin, utilizarlo para la bbdd es mala idea, podes googlear o buscar en el foro que hay mucha info sobre el tema, y si no estas trabajando con PHP 4 te sugiero que utilices PDO.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: mysql, php, poo, singleton
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:46.