|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 41 ![]() |
Bonjour à tous,
Pas très inspiré pour le titre Je voulais avoir un conseil. Prenons un exemple simple : la classe user et la classe groupe. Un user appartient à un groupe. Vaut-il mieux faire Code :
Code :
Merci d'avance pour vos conseils. EDIT : message pour un modo qui passerait... Je pense que ce topic a plus sa place dans "Conception" que dans "Langages en général", si quelqu'un peut le deplacer merci |
||||
|
|
00
|
|
|
#2 |
|
Invité(e)
Messages : n/a ![]() |
Bah... c'est pas pareil :-)
Si quelqu'un (comprendre un autre objet) ayant accès à un user devrait avoir le droit d'acceder à son groupe, alors la première solution est la plus logique. En revanche, s'il ne doit avoir accès qu'au nom du groupe, il faut utiliser la seconde methode (c'est une sorte d'encapsulation). A priori, il n'y a pas de réponse miracle, puisque ça dépend completement de ton appli. En revanche, ça me semble assez bizare de recréer un objet "groupe" à chaque fois que du veut accéder au nom associé à un identifiant. Enfin si tu es sûr de ne le faire qu'une fois, pourquoi pas, mais sinon, tu devrais peut être après quelque chose de plus "malin", comme une classe avec une table de hashage a qui du passe un identifiant, qui regarde dans la table si l'objet existe déjà, le retourne le cas échéant, ou le crée et l'insère dans la table sinon. Ou en plus simple (mais moins général), garder le groupe dans l'objet utilisateur (quite à ne le créer qu'à la première consultation) Et dans tous les cas, si la prog orientée objet, n'oublie pas de regarder du coté des designs patterns. Have fun :-) |
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2005 Messages : 41 ![]() |
Toujours dans le même ordre d'idée...
Je suis dans un contexte PHP / MySQL. J'ai ma classe GROUPE et ma classe USER (qui sont aussi des tables de ma BD) Un user appartient toujours à un groupe. Je veux afficher dans une page tous les users d'un groupe donné. Dans ma classe GROUPE j'ai une méthode liste_user() qui me renvoie un tableau qui contient tous ses users. Ce que je faisais jusqu'ici c'était de mettre dans ce tableau des instances d'USER. Ainsi dans ma page je parcours le tableau et j'affiche le nom des users avec $user->get_nom(). Tout cela me parraissait logique et conforme à l'esprit POO (mais peut-être que je me trompe). Mais je me pose maintenant la question de l'optimisation et des performances. En effet, dans ma méthode liste_user(), en mettant des instances de USER dans le tableau, je fais autant de requête MySQL (requête qui me permet de renseigner les attributs de USER lors de l'instanciation) qu'il y a d'users. En prennant un cas extreme avec un groupe contenant 1000 users, je fais donc 1000 requêtes Je me demande donc si il n'est pas préférable de faire une seul requête dans liste_user() (SELECT nom FROM user WHERE groupe_id=x), de boucler dessus et de faire un tableau de la forme $tableau['nom'] = la valeur. Derrière je parcours le tableau et j'affiche le nom des users avec $tableau['nom']. Je gagne ainsi énormement en performance. Mais en faisant cela je perds de la souplesse car si je décide d'afficher en plus le prenom de l'user je dois changer ma requête alors qu'avec la 1ere solution j'y accedais directement avec $user->get_prenom() Comment gérez-vous ce genre de situation? Merci de vos conseils |
|
|
00
|
|
|
#4 | ||||
|
Membre confirmé
![]() Inscription : mars 2003 Messages : 227 ![]() |
Citation:
Citation:
Citation:
Citation:
Je pense qu'il ne faut pas faire d'erreur "grossiere" comme les 1000 requetes, mais apres tu mets deja en balance des aspects contradictoire qu'il va falloir trancher. S'il n'y a pas enormement d'utilisateur, tu peux essayer de charger en memoire le groupe + tous ses utilisateurs |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com