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