codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 6 déc. 2007 à 03:35
Bon, grosse mise à jours, j'ai pris en compte vos commentaires :
Maintenant on peux se connecter à Pgsql (qui est pris en charge automatiquement (repertoire /db/dbms/pgsql.class.php)), mais aussi à Microsoft Sql Server (et comme toujours, à MySQL ! :))
La classe supporte la connexion à des serveurs dispatchés, en Load Balancing ou Fail Over (par défaut).
J'attends vos avis ! :)
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 26 sept. 2007 à 16:08
c'est vrai faudra que je regarde ca de plus pres ! :)
Merci pour ta remarque :)
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 19 sept. 2007 à 12:31
Salut,
Une classe d'abstraction c'est bien, mais c'est mieux quand c'est compatible avec d'autres moteurs que MySQL...
Même DB::open, étant donné qu'elle sélectionne la base après la connexion ne fonctionnera pas avec pgSQL...
A moins que je ne dise une ânerie, hein, mais j'ai bien cru voir que la connexion ne se faisait pas de la même manière entre MySQL et pgSQL (pour ne citer que les deux moteurs auxquels je me suis intéressé). Du coup, je pense que le code de connexion doit se trouver dans la classe concrète, puisque dépendant du moteur.
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 11 sept. 2007 à 14:57
D'apres moi, le multiton est une autre classe qui sera utilisé pour gerer toutes les instances de mes classes. Comme c'est une autre classe, je n'ai pas pensé à la mettre ici car il y en a des tres bien sur phpcs mais perso je m'en sert pour instancier mes classes :)
Ensuite, le mode Auto, au final tu fait pareil ici, sauf que tu appel une fonction en plus, c'est pas vilain :p (c'est d'ailleur pour ca qu'il y a deux possibilités : open ou connect+selectDb)
Personnellement je préfere utiliser une fonction de plus que de "surcharger" la fonction __construct. Apres, ce n'est qu'un avis personnel :)
Pour les exceptions, au final ca revient au meme. Le probleme dans ton idée, c'est que je ne fait pas forcément appel à la fonction str_replace, or, dans ton cas, si, ce qui use d'une fonction supplémentaire (à mon avis). Maintenant, c'est sur qu'il y a des choses à améliorer :)
Pour le next dans le constructeur, je suis justement pas sur, d'apres FhX (adns les commentaires de la source de Malalam), il dit qu'il ne doit pas etre dans le constructeur, mais que c'est à toi de faire appel dans une boucle while, et que c'est fait automatiquement dans une boucle foreach, mais c'est pas mon cas :/ bizar :)
Merci bien de tes commentaires :)
DiGhan
Messages postés239Date d'inscriptionsamedi 21 février 2004StatutMembreDernière intervention 3 juin 20101 11 sept. 2007 à 13:13
Pour le next de l'Iterateur, il me semble que c'est un comportement normal. Pour remédier à ce pb, il faut faire appel à next() dans le constructeur de ton Iterateur.
DiGhan
Messages postés239Date d'inscriptionsamedi 21 février 2004StatutMembreDernière intervention 3 juin 20101 11 sept. 2007 à 13:10
Salut,
La classe multiton présente dans la source de malalam est à mon sens indispensable. Elle permet de gérer les ressources et de ce fait les connexions ouvertes.
Pas de mode AUTO (connexion + selection bdd auto) , c'est dommage.
Pour les erreurs emises via exception, je pense qu'il est possible de faire plus simple :
class DBException extends Exception {
public function __construct($sMsg, $sSearch, $sReplace) {
$sNewMsg = str_replace($sSearch, $sReaplace, $sMsg);
parent::__construct($sNewMsg);
}
}
throw :
throw new DBException(DBException::ERROR, '__SEARCH__', 'mon erreur customisee');
catch :
$e->getMessage() // sans surcharge (final)
Pour le reste je trouve l'idée de la séparation action - resultat pas trop mal.
6 déc. 2007 à 03:35
Maintenant on peux se connecter à Pgsql (qui est pris en charge automatiquement (repertoire /db/dbms/pgsql.class.php)), mais aussi à Microsoft Sql Server (et comme toujours, à MySQL ! :))
La classe supporte la connexion à des serveurs dispatchés, en Load Balancing ou Fail Over (par défaut).
J'attends vos avis ! :)
26 sept. 2007 à 16:08
Merci pour ta remarque :)
19 sept. 2007 à 12:31
Une classe d'abstraction c'est bien, mais c'est mieux quand c'est compatible avec d'autres moteurs que MySQL...
# $DB->connect ('host', 'login', 'password');
# $DB->selectDb ('base');
Avec postgreSQL, ça marche pas...
Même DB::open, étant donné qu'elle sélectionne la base après la connexion ne fonctionnera pas avec pgSQL...
A moins que je ne dise une ânerie, hein, mais j'ai bien cru voir que la connexion ne se faisait pas de la même manière entre MySQL et pgSQL (pour ne citer que les deux moteurs auxquels je me suis intéressé). Du coup, je pense que le code de connexion doit se trouver dans la classe concrète, puisque dépendant du moteur.
11 sept. 2007 à 14:57
Ensuite, le mode Auto, au final tu fait pareil ici, sauf que tu appel une fonction en plus, c'est pas vilain :p (c'est d'ailleur pour ca qu'il y a deux possibilités : open ou connect+selectDb)
Personnellement je préfere utiliser une fonction de plus que de "surcharger" la fonction __construct. Apres, ce n'est qu'un avis personnel :)
Pour les exceptions, au final ca revient au meme. Le probleme dans ton idée, c'est que je ne fait pas forcément appel à la fonction str_replace, or, dans ton cas, si, ce qui use d'une fonction supplémentaire (à mon avis). Maintenant, c'est sur qu'il y a des choses à améliorer :)
Pour le next dans le constructeur, je suis justement pas sur, d'apres FhX (adns les commentaires de la source de Malalam), il dit qu'il ne doit pas etre dans le constructeur, mais que c'est à toi de faire appel dans une boucle while, et que c'est fait automatiquement dans une boucle foreach, mais c'est pas mon cas :/ bizar :)
Merci bien de tes commentaires :)
11 sept. 2007 à 13:13
11 sept. 2007 à 13:10
La classe multiton présente dans la source de malalam est à mon sens indispensable. Elle permet de gérer les ressources et de ce fait les connexions ouvertes.
Pas de mode AUTO (connexion + selection bdd auto) , c'est dommage.
Pour les erreurs emises via exception, je pense qu'il est possible de faire plus simple :
class DBException extends Exception {
public function __construct($sMsg, $sSearch, $sReplace) {
$sNewMsg = str_replace($sSearch, $sReaplace, $sMsg);
parent::__construct($sNewMsg);
}
}
throw :
throw new DBException(DBException::ERROR, '__SEARCH__', 'mon erreur customisee');
catch :
$e->getMessage() // sans surcharge (final)
Pour le reste je trouve l'idée de la séparation action - resultat pas trop mal.