CLASSE FRANCOPHONE D'EXPLOITATION MYSQL

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 23 déc. 2007 à 12:35
Gwinyam Messages postés 47 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 2 janvier 2008 - 2 janv. 2008 à 14:40
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/45175-classe-francophone-d-exploitation-mysql

Gwinyam Messages postés 47 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 2 janvier 2008
2 janv. 2008 à 14:40
L'astuce est que j'ai corrigé mon code depuis en suivant ces critiques. Certes, je ne les ai pas encore toutes suivies et donc corrigé tout mon code. Mais c'est surtout qu'à l'origine, les informations de connexion étaient stockées directement dans ma classe et que ni le constructeur, ni d'autres fonctions ne permettaient de les modifier. Ce qui est parfaitement idiot.

Donc là je prends la défense de malalam.

Merci de l'encouragement quand même^^
acidtoxik Messages postés 28 Date d'inscription dimanche 12 mai 2002 Statut Membre Dernière intervention 2 janvier 2008
2 janv. 2008 à 14:31
MALALAM, avant de poster des critiques qui descendent le travail fait par les internautes qui font vivre le site que tu administres, tu devrais plutôt réviser la POO.

Je ne suis pas un expert mais je sais au moins faire la différence entre une classe et une instance de classe (un objet pour info :p) cf ton premier post :2 classes...

Bon code dans l'ensemble, bonne idée de base consistant a faire une API franco. C nice :)
Gwinyam Messages postés 47 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 2 janvier 2008
27 déc. 2007 à 21:11
Ah ouais, pas idiot. Bon, donc c'est reparti pour un tour^^
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
27 déc. 2007 à 13:56
Hello,

tu as 2 façons de procéder.
1 - Tu lances des exceptions qui doivent arrêter l'exécution de ta classe, dans ce cas tu ne fais que les lancer dans ta classe et tu les interceptes en dehors.
2 - tu veux pouvoir gérer tes exceptions dans ta classe (par exemple, j'essaye une requête...mais si je ne suis pas connecté, je veux pouvoir intercepter l'excption et me connecter pour pouvoir conbtinuer), dans ce cas, tu gères tes try catch dans ta classe. Ce n'est pas le cas le plus fréquent, mais ça peut arriver.

1 exemple illustrant les 2 exemples :

<?php
class a {
public function myFunc() {
if(false === isset($b)) {
throw new Exception('Erreur $b n\'est pas initialisé');
}
echo $b;
}
}

try {
$a = new a;
$a->myFunc();
} catch(Exception $e) {
echo $e;
}

class c {
public function myFunc() {
try {
if(false === isset($b)) {
throw new Exception('Erreur $b n\'est pas initialisé');
}
} catch(Exception $e) {
$b = 1;
}
echo $b;
}
}

$c = new c;
$c->myFunc();
?>
Gwinyam Messages postés 47 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 2 janvier 2008
27 déc. 2007 à 11:07
Donc en gros, mes try-catch ne servent à rien? Ils doivent être mis dans le code utilisant ma classe là où je ferai appel à mes fonctions?
guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016
26 déc. 2007 à 19:25
Salut,
Pour les exceptions:
# try
# {
# mysql_query($sql);
# $this->result=mysql_affected_rows();
# $retour[0]=$this->result;
# $retour[1]=true;
# }
# catch(Exception $Except)
# {
# }
Là Tu cherches à attraper des exceptions qui seraient émises par les fonctions mysql natives:
cela te sert absolument à rien car les fonctions de la librairie mysql ne lance pas d'exception cachable.
Tu dois à ce niveau les lancer en fonction de l'erreur rencontrée dans ton code. Cette exception pourra être récupérée au moment de l'appel à tes méthodes de ta classe dans les try.
cs_zzzzzz Messages postés 408 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 18 décembre 2012
24 déc. 2007 à 17:10
La note de 1 est injustifié je vais donc mettre le maximum pour contre-balancer. Je trouve que le code est un bon départ. Certes il y a mieux mais c'est toujours bien :) Bon noël :)
Gwinyam Messages postés 47 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 2 janvier 2008
23 déc. 2007 à 14:24
ça peut s'imaginer effectivement. Pour le moment je finis ce framework, on verra ensuite ;)

au passage, ce n'est pas un framework mysql francophone que je veux faire, mais un framework php francophone léger^^

J'ai déjà commencé à tout corriger, je ne devrais pas tarder à fournir une seconde version bien moins critiquable ;)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 déc. 2007 à 12:56
Ravi que tu le prennes bien :-)
Bonnes fêtes à toi aussi, et vraimznt, revois ta copie et sors nous un joli code contre lequel je ne pourrai rien dire ;-) Je suis sûr que tu le peux.
Un "hint" : sprs des sentiers battus un peu plus. Des wrappers, il y en a des tas...et ce n'est pas super utile. Des abstractions DB, il y en a bcp aussi, et tu aurais vraiment bcp de boulot si tu voulais te démarquer. trouve autre chose...du genre...tu veux faaire un framework mysql francophone ? Ok, attaque toi à SQL. SQL est un langage simple, mais anglophone...un truc très sympa serait de proposer une alternative francophone. Du genre :
SELECTIONNE user_nom, user_email DANS users OU user_id = 251207
Par exemple hein... :-) En moins reessemblant à du SQL ce serait encore mieux. Avec des méthodes par exemple. Enfin chais pas...change d'optique.
Gwinyam Messages postés 47 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 2 janvier 2008
23 déc. 2007 à 12:46
Je dois avouer que c'est pas faux et c'est le genre de commentaires que j'attendais. Donc effectivement, il y a encore du boulot.

Merci bonhomme et bonnes fêtes de fin d'année à toi aussi.^^
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 déc. 2007 à 12:35
hello,

je dois être dans un mauvais jour aujourd'hui...mais je vais encore ne pas être très gentil...(c'est le deuxième code que je descends).
Tu utilises php5, déjà, bien. Je vois encore trop de codes en PHP4, à l'aube de la sortie de PHP6...
Par contre, j'ai un paquet de griefs!
Déjà, pourquoi mets-tu tes paramètres de connexion dans ta classe? Il faut modifier ta classe à chaque fois qu'on veut une connexion à un autre serveur? genre, si mon application web doit se connecter à 2 serveurs db (et c'est svt le cas pour moi...dans mon taf), je dois avoir 2 classes?? Les passer en paramètre serait pourtant si simple...
Tu ne gères aucune erreur. php5 offre les exceptions, et toi, tu n'en fais rien. Si mon serveur est down, il se passe quoi ? Certes, ton constructeur retourne false (???), ce qui est déjà étrange, mais de toute manière il essaye de se connecter; donc si mon serveur db est down, j'aurai une belle erreur. Alors que si tu avais implémenté les exceptions, j'aurais pu "catcher" (intercepter ou attraper, pour les anglophobes) cette erreur.
Tu me donnes des méthodes ReqDELETE, ReqINSERT etc...avec des mysql_affected_rows() en retour, sans te soucier de vérifuer que j'utilise la bonne méthode. Que se passe-t-il si je fais un ReqSELECT en lui passant une requête UPDATE ? Ou l'inverse ?
Des die() dans une classe...bref, ça rejoint mon grief sur la gestion des erreurs.
la méthode TupleSuivant() m'inquiète un peu. Il y a une fonction qui s'appelle mysql_data_seek() qui aurait été nettement plus appropriée.
Il n'y a même pas la gestion des ressources (resources, je ne sais pas trop comment traduire ça...ressource n'est pas franchement à propos, mais là je ne trouve rien de mieux). Ta classe est juste un "wrapping" des fonctions mysql_*, avec tout juste quelques "améliorations" (Req*() ).
Bref, selon moi, ta classe n'apporte rien, voire même enlève à la facilité d'utilisation des fonctions mysql_*().
Tu devrais sérieusement jeter un oeil sur d'autres classes DB, sur l'abstraction, les singletons, les multitons, sur PDO etc...avant de continuer sur cette voie pour ton projet de "framework francophone mysql". Tu pars sur un mauvais trip, là.
Joyeux Noël... ;-) (désolé, je sais que je suis dur là, donc je voulais contrebalancer : ton idée est louable, tu utilises php5, etc...mais tu te fourvoies là. Je ne peux pas te laisser faire sans râler. Mais quand même, je veux que tu passes de bonnes fêtes de fin d'années...donc : réflêchis, relis un peu la doc de PHP, mate d'autres codes dans le même genre, et change ton optique...et pour la nouvelle année, repars sur de nouvelles bases!).
Rejoignez-nous