Page 1 sur 1

Trop de méthodes ?

Posté : 05 août 2012, 23:54
par Braaazil
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 ?

Re: Trop de méthodes ?

Posté : 06 août 2012, 00:06
par momox
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.

Re: Trop de méthodes ?

Posté : 06 août 2012, 16:40
par Braaazil
Merci pour ta réponse qui me rassure quant à ma conception.
Et merci pour __call.

Re: Trop de méthodes ?

Posté : 07 août 2012, 14:55
par Lirio
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));

Re: Trop de méthodes ?

Posté : 07 août 2012, 14:59
par momox
Oulà, si on devait lister toutes les méthodes...

Re: Trop de méthodes ?

Posté : 07 août 2012, 15:16
par Lirio
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: