Ver Mensaje Individual
  #10 (permalink)  
Antiguo 09/02/2010, 19:12
Avatar de maturano
maturano
 
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: clase conexión a MYSQL

Cita:
Iniciado por neodani Ver Mensaje
Es decir que no se puede usar la clase dos veces en el mismo script, porque serían 2 instancias?

O que no se puede usar esta linea dos veces sin cerrar la instancia actual?

$db = DataBase::getInstance();
La idea del patrón singleton es utilizar una sola instancia de la misma clase. En este caso se está manejando una conexión a la BD, es útil aquí para mantener una sola conexión.

Sin el patrón singleton, pudieras tener un código como este en diferentes partes de tu aplicación:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $db = new Clase_BaseDeDatos();
  4. $db->conectar('...');
  5. $db->ejecutar('...');

Cada que harías eso estarías creando una nueva conexión, algo sin mucho sentido cuando, la mayoría de veces, siempre trabajas sobre la misma Base de Datos. Con sigleton, sino existiera conexión la crearías, de existir recuperas ese mismo recurso; de eso se trata.

www.php.net/singleton

Cita:
Iniciado por neodani Ver Mensaje
Cuando aparece esto dentro de la clase...

function __destruct(){
@mysql_free_result($this->resource);
@mysql_close($this->conexion);
}

¿Es que automáticamente sin ejecutar nada mas, se autodestruye o hay que llamar a esos constructores y destructures en el script que utilice la clase?
Me refiero como cierras la conexión, lo hace implicitamente con ese trozo de código dentro de la clase?
Los constructures y destructores son métodos especiales que se ejecutan automáticamente cuando creas y destruyes un objeto respectivamente.

Esa porción de código se ejecutaría al finalizar el script, porque así es el comportamiento de PHP, libera de memoria las variables utilizadas. También podrías borrar la variable manualmente si ya no la necesitarías.

Código PHP:
Ver original
  1. <?php
  2.  
  3. // En tú código necesitas trabajar con alguna BD, entonces ...
  4.  
  5. $db = new Clase_BaseDeDatos();
  6. $db->ejecutar('...');
  7.  
  8. // Ya no trabajarás más con la BD
  9. unset($db);
  10. // Al destruir el objeto, se cerró automáticamente la conexión.

www.php.net/destruct
__________________
I ♥ The Music!