On peut pousser largement plus loin en encapsulant complètement le code SQL.
Exemple idiot et simplifié :
Exemple idiot et simplifié :
Code PHP :
<?php
//Définition du type de commande à utiliser
$Query= $this->_SQLEngine->initCmd('SELECT');
//Tables à utiliser
$Query->addTable('Joueur');
$Query->addTable('Planete');
$Query->addTable('Ressources');
//Champs à retourner
$Query->addField('Joueur','Id');
$Query->addField('Ressource','Nom');
//Jointures à utiliser
$Join1=$Query->newJoin('Joueur', 'Planete');
$Join1->addLink('Joueur_Id','Planete_Joueur_Id');
$Join2=$Query->newJoin('Planete', 'Ressource');
$Join2->addLink('Planete_Id','Ressource_Planete_Id');
//Clause Where
$Query->addWhere('Joueur_Nom',$_SESSION['Joueur_Nom']);
//Exécution
$Data=$Query->Execute();
C'est alors la classe qui s'occupe de transformer tout ça en une syntaxe appropriée en fonction du moteur utilisé.
Je pense par exemple aux syntaxes SQL portant sur les jointures qui peuvent changer d'un moteur à l'autre, à l'utilisation des HINTS ou à la simulation de la clause LIMIT pour les moteurs ne le supportant pas en natif.
Avec l'héritage de classes de PHP5, il est facile d'implémenter une classe centrale et des classes spécifiques à chaque moteur.
Le code devient plus long à l'appel mais le support multibase est renforcé. Maintenant, est-ce que ce genre de truc est important dans le cadre d'un projet personnel, j'en doute fort.
Professionnellement par contre, le support de différentes bases de données et ce de manière optimisée est indéniablement un plus.