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

Duda con clase mysql, saber si se ejecuta 2 veces la consulta

Estas en el tema de Duda con clase mysql, saber si se ejecuta 2 veces la consulta en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Cita: Iniciado por GatorV De todos modos, muestrame como se trabajaría en el mismo script con 2 bases de datos al mismo tiempo. En el ...

  #31 (permalink)  
Antiguo 17/04/2010, 18:36
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Respuesta: Duda con clase mysql, saber si se ejecuta 2 veces la consulta

Cita:
Iniciado por GatorV Ver Mensaje
De todos modos, muestrame como se trabajaría en el mismo script con 2 bases de datos al mismo tiempo.
En el ejemplo anterior.


Cita:
Iniciado por GatorV Ver Mensaje
Al usar un patrón como Registry puedes guardar la instancia por defecto de tu clase Db y así te evitas estar creando objetos de forma innecesaria y se consigue lo que en teoría se haría con el Singleton y aparte queda la limpieza y el poder de poder usar otras bases de datos.
Saludos.
Si definitivamente el patrón Registry es mucho más limpio en cuanto al trabajo con dos bases de datos distintas.

Me aportan mucho tus comentarios
  #32 (permalink)  
Antiguo 17/04/2010, 23:19
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
Respuesta: Duda con clase mysql, saber si se ejecuta 2 veces la consulta

@atrianaster No se que tanto conozcas de PHP5, pero uno de los mayores cambios que se hicieron es que ahora los objetos se pasan y se devuelven por referencia, por lo que si ejecutas tu ejemplo anterior, cambiarias la instancia de Singleton por la otra base de datos, lo que te impediria seguir trabajando con la primera base de datos.

No es por ser pesado, pero es por algo que ningún framework que se considere Profesional implementa Singleton en sus clases conexión, limitan el trabajo al programador, más que ayudarlo.

Saludos.
  #33 (permalink)  
Antiguo 21/04/2010, 15:18
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda con clase mysql, saber si se ejecuta 2 veces la consulta

Cita:
Iniciado por GatorV Ver Mensaje
@atrianaster No se que tanto conozcas de PHP5, pero uno de los mayores cambios que se hicieron es que ahora los objetos se pasan y se devuelven por referencia.
Estamos claro, uno de los mayores avances de PHP4 a PHP5 es el manejo de memoria. “Los objetos” en PHP5 se asignan por referencia y no por valor. Si a una variable le asignamos un objeto, la misma contendría una referencia al objeto y no una copia. Esto se cumple solo para las “variables de tipo object”, para asignar variables de tipo int, string, bool, float, array, resource por referencia estarías obligado a utilizar & delante de la variable a asignar.

Pero esto no sucede con funciones, métodos que devuelven objetos, en este caso seria una copia por valor y no por referencia.

Código PHP:
$db1 DataBase::getInstance('127.0.0.1','root','','forosweb');
$db2 DataBase::getInstance('127.0.0.1','root','','forosweb2'); 
En este caso $db1 almacenaría una referencia a la primera instancia de la clase DataBase y $db2 otra referencia a la segunda instancia de la clase DataBase ya que son dos bases de datos distintas.

Cita:
Iniciado por GatorV Ver Mensaje
Por lo que si ejecutas tu ejemplo anterior, cambiarias la instancia de Singleton por la otra base de datos, lo que te impediría seguir trabajando con la primera base de datos.
Si cambia la instancia del Singleton por la otra base de datos, pero la primera referencia a la primera base de datos esta almacenada en una variable como es normal, ya que se asigno por valor.

Cita:
Iniciado por GatorV Ver Mensaje
No es por ser pesado, pero es por algo que ningún framework que se considere Profesional implementa Singleton en sus clases conexión, limitan el trabajo al programador, más que ayudarlo.
No es por defender el Patrón Singleton, pero creo que utilizar Singleton o no depende del ámbito del proyecto, a lo mejor @neodani no necesita trabajar con dos bases de datos a la vez.

Espero que hayas entendido ahora. Sino te lo explico en un ejemplo.

Última edición por atrianaster; 21/04/2010 a las 16:42
  #34 (permalink)  
Antiguo 21/04/2010, 15:40
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
Respuesta: Duda con clase mysql, saber si se ejecuta 2 veces la consulta

De acuerdo pero rompes una vez más con la idea del patrón Singleton, ya lo que estas haciendo es usando un pseudo patron Factory.

No es por llevarte la contraria, simplemente es para que entiendas cual es el ámbito de cada patrón de diseño y es mejor llevar limpiamente cada patrón.

Singleton es para tener 1 sola instancia global de un objeto, si estas "modificando" para tener diferentes instancias, entonces no uses singleton y simplemente deja el constructor publico y crea los objetos usando el operador new.

Lo ideal como ya lo repeti en posts anteriores es que las clases conexión se guarden en un registro si van a ser usadas en forma global, así no tienes que construir un objeto cada que quieras usar tu base de datos.

Etiquetas: clase, mysql
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 21:29.