JeuWeb - Crée ton jeu par navigateur
[Framework] Avantages et inconvénients ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Framework] Avantages et inconvénients ? (/showthread.php?tid=2900)

Pages : 1 2 3 4 5 6 7 8


RE: [Framework] Avantages et inconvénients ? - pascal - 18-08-2008

bon, et concernant l'OR... l'accès à la DB pour ce framework de jeu, ça se passerait comment ?

mes réfllexions :
- au minimum une classe d'abstraction de DB
- pour les DAO, au minimum une interface à implémenter, sinon ça ne sera pas homogène

A+

Pascal


RE: [Framework] Avantages et inconvénients ? - Sephi-Chan - 18-08-2008

Du PDO tout bête ? Éventuellement une génération de requêtes à la volée pour les requêtes de CRUD simples ?


Sephi-Chan, qui aime écrire ses requêtes… :'(


RE: [Framework] Avantages et inconvénients ? - Asther - 18-08-2008

oui je pense qu'un classe d'abstraction avec les parametre de connection dans le constructeur c'est une bonne idée non?
ca permet de faire les requette en appelant le constructeur de la classe db parent.
je suis peut etre a l'ouest?
dite moi car c'est comme ça que je procede ^^


RE: [Framework] Avantages et inconvénients ? - Asther - 18-08-2008

Je sait pas mais y a surement moyen d'alleger le tout car je voit ta methode delete ou update, tu peut faire une methode SqlOperator qui s'occupe de toutes les actions a effectuer (update,select,delete etc..) car ca ne me parait pas trés souple pour de l'objet.

enfin je dit ca mais je suis pas un crack non plus ^^.


RE: [Framework] Avantages et inconvénients ? - Roworll - 18-08-2008

On peut pousser largement plus loin en encapsulant complètement le code SQL.
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.


RE: [Framework] Avantages et inconvénients ? - Sephi-Chan - 18-08-2008

J'aime bien cette approche. Elle est très claire. Il ne lui manque plus qu'une petite méthode de sélection des champs, du genre getField(array('joueur_id', 'joueur_nom')).


Sephi-Chan


RE: [Framework] Avantages et inconvénients ? - pascal - 18-08-2008

on est en train de réécrire un ORM Tongue

A+

Pascal


RE: [Framework] Avantages et inconvénients ? - Sephi-Chan - 18-08-2008

Le getField() ne s'appliquerait que sur la requête la plus haute. Les éléments du tableau passé en argument sont remplacent le * dans l'exemple que tu viens de donner. Ainsi, ça ne complique rien, quelle que soit la requête.


Sephi-Chan


RE: [Framework] Avantages et inconvénients ? - Roworll - 18-08-2008

Citation :Justement je trouve ça inutile et chiant, surtout quand tu as des requêtes très complexes
Comme je l'ai dit, dans le cadre d'une application perso, c'est certainement inutile.
Maintenant, si pour une raison quelconque tu dois passer de MySQL à SQL Server ou Oracle, tu devras changer le code SQL d'une partie de ton application (je pense précisément aux LIMIT)

En fait, je démontrais juste qu'il était possible d'aller bien plus loin que ton exemple.
Pourquoi faire un distingo entre MySQL et Oracle dans ta classe au cas par cas plutôt que d'utiliser l'héritage ? Pourquoi se limiter à quelques différences plutôt que de prendre les spécificités de chaque moteur dans leur ensemble ?

De toute manière, une requête complexe aura souvent besoin d'être réécrite en fonction du moteur de BDD pour être pleinement optimisée.


RE: [Framework] Avantages et inconvénients ? - Sephi-Chan - 18-08-2008

Comme quoi l'abstraction a ses limites... Je doute quand même qu'un système change de SGBD une fois lancé.