DBWrapper, coder sans vous soucier du type de BD utiliséeLe pourquoi
Wrapper : Patron de conception (design pattern) qui permet de convertir l'interface d'une classe en une autre interface que le client attend.
Source : fr.wikipedia.org/
Si vous avez déjà dû convertir 2000 lignes de codes car vous deviez changer de type de BD (Microsoft SQL Server vers une MySQL par exemple), vous savez que le tout est très difficile et très long. J'ai véçu ça il y a trois ans déjà et je me suis promis de ne jamais avoir à revivre ça (je fais encore des cauchemars). C'est pourquoi j'ai créer une classe (PHP 5) qui me permet de mieux dormir aujourd'hui. Je fais donc vous présenter cette classe ici. Alors sans tambour et trompette, voici DBWrapper. DBWrapperDBWrapper agis comme un interface qui vous permet d'utiliser n'importe quel BD. Vous devez seulement indiquer au départ quel type de BD vous désirer utiliser. Ensuite, vous utiliser les méthodes de la classe DBWrapper. Par exemple, pour vous connecter en PHP sur une BD ODBC, vous devez utiliser odbc_connect(). Pour une BD MySQL vous devez utiliser mysql_connect(). BDWrapper s'occupe de tout ça pour vous. Une fois indiquer à DBWrapper quel BD utiliser, vous n'avez qu'à utiliser la méthode DBConnect() et le tour est joué. private function DBConnect()
{
switch ($this->m_sDBType)
{
case 'MySQL':
$this->m_rConnectionID = mysql_connect($this->m_sConnectionString, $this->m_sUsername, $this->m_sPassword);
mysql_select_db($this->m_sDatabase);
break;
case 'ODBC':
$this->m_rConnectionID = odbc_connect($this->m_sConnectionString, $this->m_sUsername, $this->m_sPassword);
break;
case 'SQLITE':
$this->m_rConnectionID = sqlite_popen($this->m_sConnectionString, $this->m_sMode);
break;
}
}
Applanir les différencesLorsque vous faite un INSERT, il est parfois utile de connaitre la dernière Primary ID utilisé lorsque l'auto-increment est utilisé. Pour ce faire, MySQL et SQLite ont des fonctions prévues pour ça (mysql_insert_id() et sqlite_last_insert_rowid()) mais pas ODBC. DBWrapper arrive à la rescousse. public function DBGetLastID()
{
switch ($this->m_sDBType)
{
case 'MySQL':
return mysql_insert_id($this->m_rConnectionID);
break;
case 'ODBC':
$query = "SELECT @@IDENTITY AS ID;";
$result = odbc_exec($this->m_rConnectionID, $query);
$row = odbc_fetch_object($result);
return $row->ID;
break;
case 'SQLITE':
return sqlite_last_insert_rowid($this->m_rConnectionID);
break;
}
}
Sébastien Brodeur Il est strictement interdit de reproduire ce texte sans la permission écrite de l'auteur. Commentaire(s)John Doe - 2008-03-11 21:27:27
Pourquoi ne pas utiliser PDO tout simplement ?
Sébastien Brodeur - 2008-03-12 11:59:58
PDO existait pas en 2003 :-) De plus, DBWrapper fonctionne sur PHP 4 contrairement à PDO.
t - 2009-02-22 13:36:19
t
Ajouter un commentaire |
Les gens qui ont consulter cet article, ont aussi consultez ceux-ci : |
|