Como todos sabemos las ventajas de la programacion orientada a objectos es poder reutilizar el codigo, aqui les muestro como hacer una clase en PHP para conectarse a la base de datos, tambien se creara una capa superior a la conexion para poder reutilizar nuestro codigo.
La clase no sera un singleton, debido a que si en cualquier momento se requiere cambiar de servidor de base de datos o se utilizen varias conexiones a diferentes bases de datos, el singleton no nos funcionaria.
Unos de los principios de la clase para conectarse es que pueda ser utilizada por cualquiera, recibira todos las parametros necesarios para crear la conexion y como servidor de base de datos se utiliza MySQL.
class ConnectionDatabase {
private $user;
private $password;
private $database;
private $server;
private $link;
private $result;
//===================================================================
function __construct($user, $password, $database, $server) {
$this->user = $user;
$this->password = $password;
$this->database = $database;
$this->server = $server;
} // end __construct
Primero declararemos las variables y en el contructor recibimos los parametros necesarios para inicializar las variables, como puedes ver con esto, esta clase se puede conectarse a cualquier servidor.
//===================================================================
private function connect(){
if(isset($this->link)){
$this->link = mysql_connect($this->server,$this->user,$this->password) or die(mysql_error());
$this->selectDatabase();
}
return $this->link;
} // end connect
//===================================================================
private function selectDatabase(){
mysql_select_db($this->database,$this->link) or die(mysql_error());
}
Estos metodos son privados por que los demas metodos lo utilizaran, entonces no tiene caso que sea publico.
//===================================================================
public function executeQuery($query){
$this->result = mysql_query($query,$this->link);
return $this->result;
}
Este metodo si es publico, puede ejecutar cualquier query que me mandes, insert, update o select.
//===================================================================
public function fetchArray($query){
$fetchArray = null;
$this->result = $this->query($query);
while($array = mysql_fetch_array($this->result)){
$fetchArray[] = $array;
}
$this->disconnect();
return $fetchArray;
}
Este metodo tambien es publico y si lo observas tiene un while en donde llena un array para poderlo regresar, el array que regresa lo puedes recorrer en un foreach.
//====================================================================
private function disconnect(){
mysql_close($this->link);
}
//====================================================================
private function freeResult(){
mysql_free_result($this->result);
}
} //end class
Estos son los respectivos metodos para liberar y cerra la conexion que tambien son privados