CLASSE OBJET DAO COUCHE D'ACCÈS À MYSQL DATA ACCESS OBJECT

kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015 - 25 juin 2006 à 17:03
cs_Antidote Messages postés 163 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 mai 2010 - 26 juin 2006 à 15:05
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/38288-classe-objet-dao-couche-d-acces-a-mysql-data-access-object

cs_Antidote Messages postés 163 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 mai 2010
26 juin 2006 à 15:05
Salut,

Perso je ne vois l'intéret d'une telle classe. Tu ne fais que masquer les fonctions mysql de php par les tiennes sans véritable ajout de fonctionnalité.

Tu n'utilises pas le pointer sur la resource mysql comme précisé par KANKRELUNE, voir tu te complexifie la vie notemment avec le last id, sache qu'un fonction mysql eiste déjà pour ceci.

Comme tu le dis tu rajoutes une couche de fonction non seulement inutile mais en plus ça ralentie ton code pour rien et je trouve le rend plus floue, besoin d'appeler une classe, un fichier de connexion un fichier de déconnexion alors que tout existe sans cela.

Je tiens à précisé qu'aucune configuration n'est possible comme le choix d'avoir unne connexion persistante, une connexion unique, une connexion pour chaque instance de la classe, la façon dont pourrait être géré les erreurs, la gestion de la connexion et de la déconnexion est inexistante...

Encore ta couche permettrais de faire l'abstraction du moteur de BDD utilisé ça serait utilise si on n'avais plus à se soucier qu'on utilise les fonction Mysql, Mysqli, Db2, Oracle, postgreSql etc ...

Petite précision faire une requête Sql dans le but de faire un mysql_num_rows est très lent et totalement inutile sachant qu'il existe une fonction COUNT() dans le langage Sql qui s'avère être bien plus rapide.

Mon commentaire final serait que cette classe est inadaptée et inutile et n'est pas du tout d'un niveau initié je trouve.

PS : j'aprécie l'effort d'écriture à la PEAR.

Note : 1 pour l'effort d'écriture.
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
25 juin 2006 à 17:03
Ne marche que si ta connexion à Mysql a déjà été activée !!!!


Pourquoi ne pas avoir fait une méthode d'ouverture de connection avec stockage du pointeur en interne... et une de fermeture pourrait être utile aussi... .. .


function DAO_numrows()
{
$dao_numrows = mysql_num_rows($this->dao_result);
return $dao_numrows;
}

... .. .

function DAO_numrows()
{
return mysql_num_rows($this->dao_result);
}

non... .. ?

Le die dans la méthode d'erreur n'est pas une bonne idée... en prod c'est crade d'afficher une page blanche ou partiellement chargée avec un erreur sql... qui plus est si tu veux gérer différament les erreurs (les loguer par exemple) t'es bonbon... .. .

/**
* Returns the last auto_increment id
* @param : the identifier and the table name
* @return : the last auto_increment id
*/
function DAO_last_id($id,$table)
{
$li=mysql_query("SELECT $id FROM $table ORDER BY $id DESC LIMIT 0,1");
$r=mysql_fetch_assoc($li);
if (mysql_num_rows($li)==1) {
return $r[$id];
}else{
return NULL;
}
}

... .. .

function DAO_last_id()
{
return mysql_insert_id();
}

Une méthode escape() ne serait pas du luxe... du genre...

function escape($value)
{
if (get_magic_quotes_gpc())
$value = stripslashes($value);

if (!is_numeric($value))
$value = mysql_real_escape_string($value);

return $value;
}

@ tchaOo°
Rejoignez-nous