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

duda con conecciones a una BD

Estas en el tema de duda con conecciones a una BD en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hola quiciera saber si es malo tener un metodo publico que se conecte a una base de datos y dentro de este metodo llamar a ...
  #1 (permalink)  
Antiguo 09/11/2010, 13:06
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
duda con conecciones a una BD

hola quiciera saber si es malo tener un metodo publico que se conecte a una base de datos y dentro de este metodo llamar a uno privado que tambn se conecte a la base de datos.

EJ:

Código PHP:
Ver original
  1. class Clase{
  2.  
  3. private $conn;
  4.  
  5. public function metodo1(){
  6.  
  7. $this->conn=get_db_conn();
  8.  
  9. $this->metodo2();
  10.  
  11. mysql_close($this->conn);
  12. }
  13.  
  14. private function metodo2(){
  15.  
  16. $conn=get_db_conn();
  17.  
  18. mysql_close($conn);
  19.  
  20. }
  21.  
  22. }



saludos
  #2 (permalink)  
Antiguo 09/11/2010, 15:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Tema movido desde PHP a Frameworks y PHP orientado a objetos
  #3 (permalink)  
Antiguo 09/11/2010, 17:59
Avatar de dargorg  
Fecha de Ingreso: octubre-2010
Ubicación: Castellón (España)
Mensajes: 188
Antigüedad: 13 años, 6 meses
Puntos: 9
Respuesta: duda con conecciones a una BD

¿Por qué va a ser malo? De hecho, si no lo haces así, no podrás obtener datos de ninguna base de datos. De hecho, el ejemplo que has puesto es justamente cómo se debería hacer, para que así no se pueda acceder desde ningún otro sitio más que ese.

La única puntualización que yo pondría (que no sé si lo has hecho así) es que ese código debería ejecutarse en una clase padre (que sería la principal de todas, y por tanto, es heredada), más concretamente en el constructor de la clase, para así tener la conexión abierta desde el inicio de la ejecución del programa.

Un saludo y a programar!!
  #4 (permalink)  
Antiguo 10/11/2010, 08:06
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: duda con conecciones a una BD

hola justamente hice algo asi , encontre una clase que maneja el patro singleton y creo una instancia de esta clase en el constructor.. para hacer lo que dijiste pero tengo una duda es cierto que no es necesario el mysql_close();?


saludos
  #5 (permalink)  
Antiguo 10/11/2010, 14:56
Avatar de dargorg  
Fecha de Ingreso: octubre-2010
Ubicación: Castellón (España)
Mensajes: 188
Antigüedad: 13 años, 6 meses
Puntos: 9
Respuesta: duda con conecciones a una BD

No es estrictamente necesario, pero si recomendable si quieres optimizar los recursos de tu máquina (servidor donde se ejecuten los scripts). También que liberes recursos con mysql_free_result.

Un saludo, y si necesitas algo más aquí me tienes.
  #6 (permalink)  
Antiguo 11/11/2010, 07:48
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: duda con conecciones a una BD

Hola muchas gracias por la ayuda , estoy aprendiendo a optimizar mis clases php y me has ayudado arto , tengo otra duda si uso __destruct() en este metodo puedo colocar mysql_free_result y mysql_close?


saludos
  #7 (permalink)  
Antiguo 11/11/2010, 08:37
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: duda con conecciones a una BD

hola mira los metodos que mirando por hay en varios lados construi...


Código PHP:
Ver original
  1. public function freeResults(){
  2.  
  3.     switch ($this->tipo){
  4.          case 'mysql':mysql_free_result($this->stmt);
  5.                            break;
  6.          case 'postgress': pg_free_result($this->stmt);
  7.                            break;
  8.          break;
  9.      }
  10.        
  11.     return true;
  12.     }
  13.  
  14.    /*Destructor de la clase    */
  15.    private function  __destruct() {
  16.   switch ($this->tipo){
  17.          case 'mysql':
  18.  
  19.     if (is_resource($this->link)) {
  20.     mysql_close($this->link);
  21.  
  22.       }
  23.    break;
  24.          case 'postgress':
  25.    if (is_resource($this->link)) {
  26.     pg_close($this->link);
  27.  
  28.    }
  29.  
  30.                            break;
  31.          break;
  32.      }
  33.  
  34.    
  35.  
  36.    }

son metodos para liberar recusos.


si pueden servir?


saludos
  #8 (permalink)  
Antiguo 11/11/2010, 10:09
Avatar de dargorg  
Fecha de Ingreso: octubre-2010
Ubicación: Castellón (España)
Mensajes: 188
Antigüedad: 13 años, 6 meses
Puntos: 9
Respuesta: duda con conecciones a una BD

Sí, teoricamente sí es lo correcto, pero yo no lo haría ahí puesto que muchas veces los destructores en PHP no llegan a ejecutarse, no funcionan como deberían. Acuérdate antes de hacer mysql_close y pg_close de llamar a la función freeResults y listo ;)

Etiquetas: bd
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 18:49.