Ver Mensaje Individual
  #6 (permalink)  
Antiguo 11/12/2012, 03:41
Agrey
 
Fecha de Ingreso: octubre-2003
Mensajes: 364
Antigüedad: 20 años, 6 meses
Puntos: 1
Respuesta: Mi primer código POO - Dudas

Lo primero muchas gracias a los dos por vuestra ayuda. Me estaís ayudando muchísimo en este tema que para mi es todo un mundo nuevo. Gracias!!

Después de vuestros comentarios mi código ha quedado de la siguiente forma:

La clase conexión que crea la conexion, la envia y la cierra
Código PHP:
class conexion
{
  private 
$servidor;
  private 
$usuario;
  private 
$password;
  private 
$bd;
  private 
$database;
  
  public function 
__construct($servidor"localhost"$usuario "root"$password =   ""$bd "abm")
  {
    
$this->servidor=$servidor;
    
$this->usuario=$usuario;
    
$this->password=$password;
    
$this->bd=$bd;
    
$this->database = new mysqli($servidor$usuario$password$bd);
    if (
$this->database->connect_error) {
        die(
"Error (" $this->database->connect_errno ") "$this->database->connect_error);
    }
  }    
  
  public function 
getConexion()
  {
    return 
$this->database;
  }  
  public function 
close() 
  {
    
$this->database->close();
  }      

La clase query que ejecuta y limpia las consultas. Aquí ire metiendo más métodos.
Código PHP:
class query
{
  public function 
__construct()
  {
    
$this->pconeccion= new conexion();
  }
  public function 
__destruct()
  {
    
$this->pconeccion->close();
  }   
  
  public function 
ejecutar($sql// ejecuta consulta
  
{
    return 
mysqli_query($this->pconeccion->getConexion(),$sql);          
  }
  public function 
limpiar() // libera la consulta
  
{
    
mysql_free_result($this->pconeccion->getConexion());
  } 
             

Y la clase usuario, que es una clase que hereda de query
Código PHP:
class usuario extends query
{
  public function 
__construct()
  {
       
parent::__construct(); 
  }
  public function 
__destruct()
  {
       
parent::__destruct(); 
  }  
  
  public function 
listar()
  {
    
$sql="SELECT * FROM clientes";
    
$result=parent::ejecutar($sql);
    return 
$result;
    
parent::limpiar();
  }     

Lo veís mejor ahora.

Y mis dudas:
Es correcto crear la conexión desde el constructor? Y cerrar la conexión desde el destructor?

Si creo otra clase productos que tb hereda de query (constructor y destructor igual que usuario) y estoy trabajando a la vez con usuarios y productos se me crearian dos conexiones a la BBDD. Eso no sería correcto no?

Lo siento por mis dudas pero soy muyyy novato.