php, base de données et couche d'abstraction 1 (Principe)

Jusqu'a présent, le système de gestion de base de données (SGBD) par excellence avec php était MySQL. L'arrivé de php5 et sa future démocratisation bouscule cette donne en mettant en avant le SGBD SQLite.

Comment passer le MySQL à SQLite facilement? Juste en modifiant une seule variable? C'est là qu'interviennent les couches d'abstraction.

Qu'est ce qu'un couche d'abstraction?

De même que des drivers différents permettent l'utilisation d'une périphérie hardware à des systèmes différents; une couche d'abstraction permettra au même code php d'attaquer des bases de données différentes.

Comment?

Tout simplement car le code n'attaque pas la base de données mais la couche d'abstraction que nous appellerons drivers.

Exemple de couche d'abstraction de SGBD

Ainsi après avoir instancié les drivers adéquates (On peut passer par une variable pour lancer cette instance ce qui permet de changer de drivers en modifiant une seule variable!!!) :

// Récupération du drivers :
require_once ROOT_PATH."kernel/".$CONF['DB_SGBD'].".php";

// Instanciation :
$DB             = new Database();

// Connexion à la base de données :
$DB->connect();

Une requête ce fait alors de la sorte :

$DB->query("REQUETE")

Pour changer de SGBD, il suffit alors de coder de nouveaux drivers et de changer une variable
L'utilisation de drivers prend légèrement plus de temps pour lancer le développement, mais les mises à jour sont bien plus aisées. Alors pourquoi s'en priver ?

La prochaine étape et d'aller encore plus loin avec les couches d'abstraction en y introduisant des fonctions en plus comme celles de débugage par exemple.

5 réactions

  • De moox De moox - 20/01/2005, 15:57 #1

    Hello. Je débute en php et j'utilise pear::DB comme couche d'abstraction bd. C'est p-e plus simple que de réécrire un driver non ?
    pear.php.net/manual/en/pa...
    Bravo pour ton site, moi aussi je suis avec fc3

  • De LLaumgui De LLaumgui - 20/01/2005, 17:05 #2

    Les bibliothèques Pear sont très bien, mais coder des drivers n'pas bien dur... Donc autant coder ton propre système et le maitriser à 200% afin de l'améliorer :).
    Je dois avouer aussi que j'ai hate que FedoraCore 3 passe sous php5/MySQL 4.1/SQLite afin de tester toute la puissance de mon système de drivers ;).

    Sinon, j'utilise le système de template de Pear, mais je l'ai amélioré afin qu'il supporte la localisation (Multilanguage) et l'utilisation de constante ({PORTALL_URL} --> url du site tournant sous PortaLL).

    En tout cas bravo !!! Ca fait plaisir de voir des débutants en php utiliser le système de couche d'abstraction et coder convenablement... Le php est malheureusement trop simple d'accès et rare sont ceux qui en connaissent toute la puissances !!! php est beaucoup trop considéré comme un sous langage et c'est domage en plus d'être faux !!!

  • De moox De moox - 24/01/2005, 14:56 #3

    Hello
    J'ai pas très bien compris ton histoire de modification de classes templates de pear, tu peux me montrer ce que ça donne?
    Je crains que fc3 ->fcX ne sera pas prochainement avec mysql 4 ou php5, problème de licences?

  • De LLaumgui De LLaumgui - 24/01/2005, 17:54 #4

    Dans le constructeur je passe des variables que je peux ensuite utiliser via {variable}

  • De badn De badn - 20/06/2006, 13:17 #5

    je voudrais savoir le nom du driver que utilise php pour se connecter à une base mysql. par exemple ODBC est le driver pour seconnecter a oracle ou access . je voudrais savoir le libellé .merci

Attribution - Partage dans les Mêmes Conditions 4.0 International