SQLComposer : la doc

mardi 31 janvier 2012 à 01:48

Si I-Radian est mon bébé, SQLComposer, c'est son grand frère (je vous présenterai le troisième et le petit dernier quand j'aurai avancé dans la doc de ces deux là, c'est promis).

Pour la petite histoire, après avoir fais du PHP pendant quelques années, testé pas mal de librairies divers et variées en étant rarement satisfait à 100%, j'ai commencé à créer mes propres librairies. Après la fac, j'ai attéris dans une boite qui migrais d'une base de donnée MySQL vers Oracle, et vu que le code avait été fait un peu n'importe comment et sous traité par plusieurs boites, c'était le bordel.

Me voila donc face à environ 250 fichiers PHP, chacun ayant sa propre connexion et 3 façon de lancer des requètes MySQL : des mysql_* dans certains fichiers, une class DB dans d'autres et une librairie mysqla_* (que j'ai personnellement mis dans la catégorie NE JAMAIS UTILISER!) qui reprenait en gros les mysql_* avec quelques améliorations. Et dans ces 250 fichiers, il a fallu que je repasse, que je modifie la casse des champs et des tables, que je check si les requêtes étaient OK (et oui, pas de clause LIMIT en Oracle, les GROUP BY sont très différents et pas d'auto_increment). Bref, un merdié sans nom.

A cette époque, je ne savais pas ce qu'était un ORM. J'avais entendu parlé de ZendDB rapidement mais je n'avais jamais vraiment pris le temps de testé. Après avoir vu ce que pouvait devenir un projet après 3 ans d'existance (vous trouverez ici le pire de ce que j'ai vu), je me suis dis que "ce serait génial d'avoir un outil qui permettrait de switcher d'un SGBD à l'autre juste en changeant la configuration".

C'est sur ce principe que SQLComposer est né : ce n'est pas une simple classe d'abstraction de base de donnée dans laquelle on écrit les requètes en toute lettre, on les exécute et on recupère une liste de résultats. C'est pour ca qu'il s'appel "Composer". Oubliez complètement le requêtage classique. Ceux qui connaissent les ORM comprennent très bien ce que je veux dire, les autres, je vous conseil de regarder le principe.

Bon, un petit exemple valant mieux qu'un long discours, vous avez la table user, vous souhaitez sélectionner l'utilisateur avec le user_id 8. Plusieurs possibilités :

<?php
// 1
$aUsers = User::SELECT()
            ->Where('user_id', 8)
            ->exec();  $oUser = $aUsers[0]; // 2
$oUser = User::SELECT()
            ->Where('user_id', 8)
            ->getOne(); // 3
$oUser = new UserRecord();
$oUser->setUser_id(8);
$oUser->select();

Certe, je ne prétant pas être au niveau d'un Doctrine ou d'un Propel, même si le poids total n'a rien à voir, je pense quand même que SQLComposer est au moins aussi facile à apréhender qu'un autre.

Pour plus de détails, vous trouverez une documentation complète ici ou dans le zip téléchargeable ci-dessous.

Télécharger :

Laissez un commentaire

captcha

En bref...

Dernier article

La dictature sur facebook

Cette semaine, l'actu, c'est Facebook qui trébuche. Le réseau social vient en effet de supprimer le droit de vote de ses membres. On a aussi GoogleNow sur Chrome, des nouvelles pas très réjouissantes de l'UIT, du piratage, l'étoile de la mort de Star Wars et une évasion échoué.

Ressources externes