BASIC MYSQL LAYER

cs_mfaraday Messages postés 144 Date d'inscription vendredi 18 avril 2003 Statut Membre Dernière intervention 4 janvier 2010 - 27 déc. 2006 à 13:17
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 29 déc. 2006 à 20:55
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/40865-basic-mysql-layer

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
29 déc. 2006 à 20:55
vi mais chui en train de la refaire (encore et encore... j'ai trouvé des trucs interessants OO :p)
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
29 déc. 2006 à 16:49
Comme mfaraday à la différence que je ne pense pas que créer un attribut de class soit utile

if(!in_array($type, array('assoc','array'...))

Mais si tu veux que cette méthode ne soit pas accessible en public la mettre en private ou en protected est effectivement la meilleur solution... .. .

Concernant l'abstraction du moteur tu trouvera quelques bon exemple sur ce site... je pense notament à la class de FhX et à celle de Malalam qui seront des bonnes bases sur lesquelles t'appuyer... .. .

@ tchaOo°
cs_mfaraday Messages postés 144 Date d'inscription vendredi 18 avril 2003 Statut Membre Dernière intervention 4 janvier 2010
29 déc. 2006 à 16:08
Salut

Pour la remarque 1 de kankrelune, pas besoin de modifier grand chose (enfin je pense)

Tu fais un $fetch_method = array ('assoc', 'array',...);

et dans ta fonction tu fait un !in_array

# public function fetch($type='array')
# {
# if(!in_array($type, $this->fetch_method))
# {
# return false;
# // ou tu généres un message d'erreur un truc genre throw new exception mais la je
# // peux pas t'aider :)
# }
# else
# {
# // Le reste de ta fonction
# }
# }

Voila j'espère avoir pu t'aider :)

Flo
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
29 déc. 2006 à 15:23
Pour ce qui est d'abstraire la classe, je suis d'accord... C'est pour ça que je disais :
"Si quelqu'un pense que le code gagnerait à devenir portable pour d'autres moteurs de bdd, avec classes abstraites et tout le tralala, je suis preneur, moi, j'y connais pas grand chose en POO."
Et je le répète, je suis pas développeur de formation, la POO, je découvre doucement...
Cependant, je ne vois pas en quoi le traitement est alourdi... Je suis preneur d'explications.

Kankrelune : "-1- tu ne vérifie pas que $type est valide si je fais $type = 'pwet' ça donne quoi ?"

Effectivement... Il ne m'était pas venu à l'idée qu'on puisse appeler fetch('pwet')... Si je passe la méthode en private, ça permet de bloquer un appel direct non ? Est-ce que c'est une solution, ou bien vaut-il mieux virer l'alias et faire des fonctions distinctes fetch_row et fetch_array, quitte à répéter du code ?


Kankrelune : "-2- tu fais ton num rows dans le for (200 résultats = 200 num rows)... il faut le faire avant et affecter le résultat à une variable"

Alors là, mea culpa... Je suis d'ordinaire le premier à faire attention à ça, et puis là, j'avais la tête ailleurs... C'est une bête erreur d'étourderie, merci de l'avoir signalée.

Merci pour ces commentaire qui me permettent d'avancer.
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
27 déc. 2006 à 16:09
Le concept n'est pas bon... il est inutile d'encapsuler dans une class des fonction SGDB si ce n'est pas une class d'abstraction... tu alourdis le traitement pour rien... essaye de la modifier pour faire une class d'abstraction SGDB et là ta class prendra tout son interet... .. .

Sinon je n'ais pas regardé en détail le code je le ferais plus tard mais ça à l'air pas mal... l'idées des requetes via un fichier xml est très bonne... .. .

par contre ça c'est pas beau...

$fetch_function = 'mysql_fetch_' . $type;
$rowset = array();
for ($i=0 ; $i < $this -> num_rows() ; $i++)

-1- tu ne vérifie pas que $type est valide si je fais $type = 'pwet' ça donne quoi ?
-2- tu fais ton num rows dans le for (200 résultats = 200 num rows)... il faut le faire avant et affecter le résultat à une variable

@ tchaOo°
cs_mfaraday Messages postés 144 Date d'inscription vendredi 18 avril 2003 Statut Membre Dernière intervention 4 janvier 2010
27 déc. 2006 à 13:17
Salut.

Personnellement, pour ce que j'en ai vu, j'aime assez. J'ai juste survolé ton code.

J'aime bien l'utilisation du XML pour stocker le texte de tes requêtes souvent utilisées.

Flo

Note : 8/10
Rejoignez-nous