Trop de méthodes ?

Petit nouveau ! | 2 Messages

05 août 2012, 23:54

hello,

je viens de me mettre aux fonctions et aux "class" mais je suis sceptique sur la façon dont j'ai créé mes méthodes.

Pour m'exercer j'ai pris comme sujet la gestion d'une liste des membres d'un groupe.

Comme j'ai parfois besoin de la liste des membres actifs, j'ai créé la methode getMembresActifs qui retourne la requête MySql adéquate.
Mais j'ai aussi besoin d'afficher les infos des membres (id, nom, prénom, etc), j'ai donc créé la methode getListeMembres (qui retourne le résultat de sa requête MySql spécifique).
Parfois j'ai besoin de trouver un membre par son identifiant ou par son nom et j'ai donc deux méthodes en plus (getMembreById et getMembreByName).

Bref je trouve que ça fait beaucoup de méthodes qui tournent toutes autour du même besoin.
Comment vous feriez pour simplifier ?

Mammouth du PHP | 1511 Messages

06 août 2012, 00:06

Ce n'est pas nécessairement un défaut de conception.
Chaque méthode semble répondre à un besoin.
Tu as ceux qui font une méthode Members::getMemberBy(Members::id, 1); et puis ceux qui comme toi font une méthode par besoin.

Chaque méthode se vaut, attention toutefois à ce que le code ne soit pas redondant.
Tu peux passer par __call sinon.

Petit nouveau ! | 2 Messages

06 août 2012, 16:40

Merci pour ta réponse qui me rassure quant à ma conception.
Et merci pour __call.

Eléphanteau du PHP | 34 Messages

07 août 2012, 14:55

En effet, ce n'est pas un défaut de conception. Mais on peut généralement factoriser cela avec une écriture utilisant un tableau en argument. Bref, quelque chose de la forme :
// Pour la liste des membres.
$members->get();

// Pour les membres actifs
$members->get(array('actif' => true));

// Avec les id ou les name
$members->get(array('id' => $id));
$members->get(array('name' => $name));
These lines the last endeavor,
To find the missing lifeline.

Mammouth du PHP | 1511 Messages

07 août 2012, 14:59

Oulà, si on devait lister toutes les méthodes...

Eléphanteau du PHP | 34 Messages

07 août 2012, 15:16

Oulà, si on devait lister toutes les méthodes...
Si le modèle est assez simple, ça reste jouable.
Sinon, c'est clair qu'il vaut mieux avoir de quoi générer automatiquement le Sql :mrgreen:
These lines the last endeavor,
To find the missing lifeline.