Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Guardar conexion a bd

Estas en el tema de Guardar conexion a bd en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, Estoy intentando dejar los malos habitos y empezar a usar OO seriamente, pero me estan surgiendo tantas dudas que me cuesta avanzar. Ahora mismo ...
  #1 (permalink)  
Antiguo 03/03/2007, 11:02
 
Fecha de Ingreso: mayo-2006
Mensajes: 38
Antigüedad: 17 años, 11 meses
Puntos: 0
Guardar conexion a bd

Hola,

Estoy intentando dejar los malos habitos y empezar a usar OO seriamente, pero me estan surgiendo tantas dudas que me cuesta avanzar. Ahora mismo estoy planteandome como manejar el tema de la conexion a la bd.

La cosa es que las distintas clases haran continuamente consultas a la bd, asi que la idea que me surge es de tener una conexion abierta todo el rato para que la usen todas la clases duranta la carga de una pagina del estilo que al empezar la pagina hacer $_SESSION['conexionbd'] = mysql_connect.... y al acabar la pagina cerrar esta conexion.

No se me surgen mil ideas mas, como tener una conexion en cada clase, o abrir y cerrar la conexion en cada método. No se necesito alguna sugerencia, que usais vosotros???
  #2 (permalink)  
Antiguo 03/03/2007, 11:20
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Guardar conexion a bd

Te recomiendo lo siguiente que es lo que yo haría...
  1. Crea un objeto para administrar la Base de Datos
  2. Crea los objetos que nesesites para administrar y luego pasas la conexion por referencia.
Bueno... el codigo es mejor que mil palabras...

Código PHP:
class SessionAdmin
{
     var 
$db 0;
     function 
SessionAdmin(&$db)
     {
          
$this->db $db;
     }
}

$db = new DBConnection(); // Inicias tu objeto de conexión a Bases de Datos...
$db->Connect(); // Conectamos a la Base...
$session = new SessionAdmin($db); // Le paso el objeto completo para que lo use como quiera.
$session->db->Connect(); // Así, usas el Objeto de Conexión a Bases de Datos como si fuera parte de tu Objeto. 
Mi sugerencia es que abras una conexión normal y la cierres al terminar el Script...

Espero mi ayuda te sirva...

Atentamente, DarkXNightmare ;D.

PD: Es casi imposible dejar una conexión siempre abierta satisfactoriamente porque si tu no cierras la conexión, PHP se encargara de cerrarla al final del Script.
PD2: La idea de pasarla por Sessiones es buena pero no es 100% seguro que nuestro Cliente permita las cookies...
__________________
Cambiando mi Web... sean pacientes :P

Última edición por DarkXNightmare; 03/03/2007 a las 11:31
  #3 (permalink)  
Antiguo 03/03/2007, 11:48
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Re: Guardar conexion a bd

Hola 1000i1!

Nada mas para enriquecer la respuesta de DarkXNightmare, si utilizas php5 cuenta con varias diferencias en relación a la OOP manejada en PHP4.

En el argumento del método constructor: "&$db", en php5, todas la referencias a objetos ya son pasadas implícitamente si tener que recurrir al uso del signo "&", también cuenta ya con modificadores de acceso y ahora tu método constructor los puedes renombrar a __construct.

El ejemplo de DarkXNightmare migrado a php5, se vería así:

Código PHP:
class SessionAdmin
{
     private 
$db null;
     
     public function 
__construct($db) {
          
$this->db $db;
     }
      
      
//Mi método getter para obtener la referencia al objeto db.
      
public function getDb() {
          return 
$this->db;
      }
}

$db = new DBConnection(); // Inicias tu objeto de conexión a Bases de Datos...
$db->Connect(); // Conectamos a la Base...
$session = new SessionAdmin($db); // Le paso el objeto completo para que lo use como quiera.
//No lo he probado pero debe de funcionar. XD
$session->getDb()->Connect(); // Así, usas el Objeto de Conexión a Bases de Datos como si fuera parte de tu Objeto. 

Un saludo!
  #4 (permalink)  
Antiguo 03/03/2007, 23:10
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Re: Guardar conexion a bd

Puedes usar el patron Singleton.. es mas eficiente:
Código PHP:
class Conexion{
  public static 
$conexion=null;//declaras la variable estatica a nullo.
 
   
public function connect(){
       if(
self::$conexion==null)
          
self::$conexion= & MDB2::connect($this->dsn$this->options); //te conectas a tu db, yo uso la libreria MDB2, pero sustituye  a tu forma de conexion.//
          
return self::$conexion;
  }

__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #5 (permalink)  
Antiguo 04/03/2007, 11:04
 
Fecha de Ingreso: mayo-2006
Mensajes: 38
Antigüedad: 17 años, 11 meses
Puntos: 0
Re: Guardar conexion a bd

Muchas gracias por vuestras respuestas, hare algunas pruebas y ya vere que me convence mas, si me surge alguna duda ya volvere a preguntar.
  #6 (permalink)  
Antiguo 05/03/2007, 05:28
Avatar de MarioNunes  
Fecha de Ingreso: agosto-2005
Mensajes: 280
Antigüedad: 18 años, 8 meses
Puntos: 1
Re: Guardar conexion a bd

Buenas 1000i1,

Yo te recomiendo que uses un MVC para después trabajar con POO.

Yo no usaria el objeto de conexión en session, siemplemente abriria la conexión al principio de cada página y lo cerraría al final de cada página.

Un saludo.
__________________
www.pensandoenred.com
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 07:56.