Accueil » Articles » DBWrapper, coder sans vous soucier du type de BD utilisée

DBWrapper, coder sans vous soucier du type de BD utilisée

Le pourquoi

Wrapper : Patron de conception (design pattern) qui permet de convertir l'interface d'une classe en une autre interface que le client attend.

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.

DBWrapper

DBWrapper 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érences

Lorsque 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;
    }
  }

Télécharger la classe DBWrapper.

Cet article vous a plu? Lisez mes autres articles pour découvrir d'autres trucs.

Sébastien Brodeur

Il est strictement interdit de reproduire ce texte sans la permission écrite de l'auteur.


Commentaire(s)

Ajouter un commentaire

Les gens qui ont consulter cet article, ont aussi consultez ceux-ci :


Valid XHTML 1.0 Transitional

Valid CSS!