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.