Foros del Web » Programando para Internet » PHP »

PHP OO Conexion db orientada a objetos

Estas en el tema de Conexion db orientada a objetos en el foro de PHP en Foros del Web. Hola quisiera que me ayuden con este POO PHP en realidad no me da ningun error me funciona correctamente pero simplemente quiero saber algo, lo ...
  #1 (permalink)  
Antiguo 28/04/2011, 14:10
Avatar de rikardoz  
Fecha de Ingreso: abril-2011
Ubicación: En mi casa
Mensajes: 165
Antigüedad: 12 años, 11 meses
Puntos: 46
Pregunta Conexion db orientada a objetos

Hola quisiera que me ayuden con este POO PHP
en realidad no me da ningun error me funciona correctamente pero simplemente quiero saber algo, lo que pasa es que yo agregue unas opciones en un script que lo vi en la red, las opciones son : cerrar y liberarawilly son 2 opciones para cerrar la consulta y la otra para liberar la memoria! aqui el codigo:

config.php
Código PHP:
<?php
//Datos de configuración de la conexión a la base de datos 
 
//Servidor 
$host='localhost'
 
//Usuario 
$user='usuariolol'
 
//Password 
$password='password'
 
//Base de datos a utilizar 
$db='mi_db';

?>
Conf.class.php

Código PHP:
<?php
Class Conf
   private 
$_domain
   private 
$_userdb
   private 
$_passdb
   private 
$_hostdb
   private 
$_db
 
   static 
$_instance
 
   private function 
__construct(){ 
      require 
'config.php'
      
$this->_domain=$domain
      
$this->_userdb=$user
      
$this->_passdb=$password
      
$this->_hostdb=$host
      
$this->_db=$db
   } 
 
   private function 
__clone(){ } 
 
   public static function 
getInstance(){ 
      if (!(
self::$_instance instanceof self)){ 
         
self::$_instance=new self(); 
      } 
      return 
self::$_instance
   } 
 
   public function 
getUserDB(){ 
      
$var=$this->_userdb
      return 
$var
   } 
 
   public function 
getHostDB(){ 
      
$var=$this->_hostdb
      return 
$var
   } 
 
   public function 
getPassDB(){ 
      
$var=$this->_passdb
      return 
$var
   } 
 
   public function 
getDB(){ 
      
$var=$this->_db
      return 
$var
   } 
 
}


?>
Db.class.php

Código PHP:
<?php
/* Clase encargada de gestionar las conexiones a la base de datos */
Class Db{

   private 
$servidor;
   private 
$usuario;
   private 
$password;
   private 
$base_datos;
   private 
$link;
   private 
$stmt;
   private 
$cierra;
   private 
$liberar;
   private 
$array;

   static 
$_instance;

   
/*La función construct es privada para evitar que el objeto pueda ser creado mediante new*/
   
private function __construct(){
      
$this->setConexion();
      
$this->conectar();
   }

   
/*Método para establecer los parámetros de la conexión*/
   
private function setConexion(){
      
$conf Conf::getInstance();
      
$this->servidor=$conf->getHostDB();
      
$this->base_datos=$conf->getDB();
      
$this->usuario=$conf->getUserDB();
      
$this->password=$conf->getPassDB();
   }

   
/*Evitamos el clonaje del objeto. Patrón Singleton*/
   
private function __clone(){ }

   
/*Función encargada de crear, si es necesario, el objeto. Esta es la función que debemos llamar desde fuera de la clase para instanciar el objeto, y así, poder utilizar sus métodos*/
   
public static function getInstance(){
      if (!(
self::$_instance instanceof self)){
         
self::$_instance=new self();
      }
         return 
self::$_instance;
   }

   
/*Realiza la conexión a la base de datos.*/
   
private function conectar(){
      
$this->link=mysql_connect($this->servidor$this->usuario$this->password);
      
mysql_select_db($this->base_datos,$this->link);
      @
mysql_query("SET NAMES 'utf8'");
   }

   
/*Método para ejecutar una sentencia sql*/
   
public function ejecutar($sql){
      
$this->stmt=mysql_query($sql,$this->link);
      return 
$this->stmt;
   }

  
/*Método para Cerrar la DB sql*/
   
public function cerrar(){
      
$this->cierra=mysql_close($this->link);
      return 
$this->cierra;
   }

       
/*Método para Liberar la memoria o a willy la ballena*/
   
public function liberarawilly(){
      
$this->liberar=mysql_free_result($this->stmt);
      return 
$this->liberar;
   }
   
/*Método para obtener una fila de resultados de la sentencia sql*/
   
public function obtener_fila($stmt,$fila){
      if (
$fila==0){
         
$this->array=mysql_fetch_array($stmt);
      }else{
         
mysql_data_seek($stmt,$fila);
         
$this->array=mysql_fetch_array($stmt);
      }
      return 
$this->array;
   }

   
//Devuelve el último id del insert introducido
   
public function lastID(){
      return 
mysql_insert_id($this->link);
   }

}


?>
Aqui viene la ejecucion del script:

Código PHP:
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-language" content="es">
</head>
<body>
<?php

$letra
=$_GET['letra'];
/*Incluimos el fichero de la clase Db*/
require 'Db.class.php';
/*Incluimos el fichero de la clase Conf*/
require 'Conf.class.php';

/*Creamos la instancia del objeto. Ya estamos conectados*/
$bd=Db::getInstance();

/*Creamos una query sencilla*/
$sql="select * from grupo where artista like '$letra%' order by id asc";


/*Ejecutamos la query*/
$stmt=$bd->ejecutar($sql);

/*Realizamos un bucle para ir obteniendo los resultados*/
while ($x=$bd->obtener_fila($stmt,0))
    {
$arrtista utf8_decode($x['artista']);
$idart $x['idgrupo'];
$richi  strtolower($asdasd);
    echo 
"<a href=\"$idart\">$arrtista</a><br>\n";
    }
$liberarawilly=$bd->liberarawilly();
$cierrap=$bd->cerrar();
?>
</body>
</html>
Lo que yo hice es agregar a DB.class.php:

Cita:
/*Método para Cerrar la DB sql*/
public function cerrar(){
$this->cierra=mysql_close($this->link);
return $this->cierra;
}

/*Método para Liberar la memoria o a willy la ballena*/
public function liberarawilly(){
$this->liberar=mysql_free_result($this->stmt);
return $this->liberar;
}
y a mi consultas obvio:
Cita:
$liberarawilly=$bd->liberarawilly();
$cierrap=$bd->cerrar();
Ahora quiero que me digan si esta correcto? o simplemente mal?
nose a mi me funciona todo correctamente pero nose si en realidad cierra y libera la memoria por eso pregunto a expertos como ustds. xD
Gracias :D

P.D necesito eso ya que manejo base de datos grandes como de 500 MB xD
__________________
Agregadecer no cuesta nada O SI?
  #2 (permalink)  
Antiguo 28/04/2011, 15:19
Avatar de elpirata15hd  
Fecha de Ingreso: abril-2011
Mensajes: 44
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Conexion db orientada a objetos

a mi parecer esta bien

Etiquetas: oop, poo
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 10:59.