par
Liquid » 14 nov. 2005, 17:26
Soit la classe Connexion :
class Connexion{
private $connexion = null;
public function __construct($host, $user, $pwd){
$this->connexion = mysql_connect($host, $user, $pwd);
}
public function getConnexion(){
return $this->connexion;
}
public function close(){
mysql_close($this->connexion);
}
}
Soit la classe abstraite Query :
abstract class AbstractQuery{
private $connexion = null;
protected function __construct($connexion){
$this->connexion = $connexion;
}
public function getConnexion(){
return $this->connexion; // Retourne la connexion sur laquelle la requête a été lancée.
}
public abstract function execute(); // Retourne un résultat [i]mixed[/i] (mauvaise idée, c'est pour l'exemple)
}
Soit une classe concrète UserListQuery qui fait un travail précis :
class UserListQuery extends AbstractQuery{
public function __construct($connexion){
parent::__construct($connexion);
}
public function execute(){
$userList = array();
$query = mysql_query("SELECT * FROM user", $this->connexion->getConnexion());
// Peupler le tableau [i]etc[/i]
return $userList;
}
}
C'est archi-simplifié mais le principe est là. Et toujours selon le principe tu devrais avoir des classes spécialisées dans ce qui est affichage (HTML) contrairement à ton exemple ou la requête et l'affichage sont mélangés.