|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : novembre 2009 Messages : 15 ![]() |
Bonjour à tous,
j'ai besoin de votre aide car je manque d'experience en POO en PHP et je souhaiterais avoir un exemple d'architecture le mieux adapté à mon programme. J'ai une application de gestion documentaire avec des bases de données. Je vais vous expliquer l'architecture de ma base de donnée et ensuite mon problème concernant l'architecture de mes classes. J'ai une table documentation qui contient plusieurs informations comme le nom du doc, sa date, etc... J'ai ensuite une table emplacement_document car celui ci peut appartenir à plusieurs rubriques et sous rubriques. Exemple un document sur l'environnement et la politique ou un document uniquement sur l'espace. J'ai aussi une table rubriquequi contient des infos sur ces mêmes rubriques. Et une table sous rubriques => Il y a donc une relation many to many entre mes tables documentation et rubrique / sous rubriques. De plus pour chaque document je peux avoir 1 ou plusieurs auteurs. Relation one to many. Voici donc l'architecture de ma base de donnée. J'ai suivi de nombreux exemple de POO en PHP mais je n'arrive pas à effectuer une architecture de mes classes. Ce sont les attributs auteurs et rubriques qui me posent problèmes. Dois je faire une classe document qui contient tous ou séparer en plusieurs classes ??? On explique souvent la POO avec des voitures et il y a des bleu, rouge, grande, petite, etc... Je crois que je pourrais simplement exposer mon problème en demandant comment rajouter dans ma classe un attribut conducteur sachant qu'il peut y en avoir un ou plusieurs ??? Merci d'avance de votre aide |
|
00
|
|
|
#2 | |
|
Membre confirmé
![]() ![]() Lionel ChaumeauDéveloppeur Web Inscription : octobre 2011 Messages : 75 ![]() |
Bonjour,
je reprends ta structure de base: Citation:
ensuite, tu sembles avoir une relation réflexive 1tomany dans ta table rubriques: une relation genre APPARTENIR: 1 rubrique n'appartient à aucune rubrique ==> rubrique 1 rubrique appartient à une rubrique ==> sous-rubrique (ça donne ta clé primaire de rubrique qui s' "exporte" dans ta table rubrique, ce qui donne un champ possiblement NULL, genre "appartient")... pour ce qui est un ou plusieurs auteurs: pourquoi ne pas gérer dans ton BO (objet métier) la propriété $auteur comme un tableau de valeur ? (au pire avec une méthode addAuteur ($aut) qui te rajoute un auteur ($aut) à la collection $auteur[] et retourne le tableau...) si tu veux aller un peu plus loin (et que l'anglais ne te gène pas), tu peux aller voir du côté du pattern iterator |
|
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
A mon avis la table sous-rubrique est discutable. Il y'a des solutions plus adaptée pour ce genre de chose notamment la représentation intervallaire qui permet une profondeur infinie de sous rubrique.
Pour les auteurs la solution de kalimukti est bonne. Une classe auteur et un paramètre dans ta classe document qui sera un tableau d'auteur. Si on veux faire les truc bien on pourrait changer le tableau par un SPLObjectStorage |
|
00
|
|
|
#4 | |
|
Membre confirmé
![]() ![]() Lionel ChaumeauDéveloppeur Web Inscription : octobre 2011 Messages : 75 ![]() |
Citation:
![]() Je connaissais ni l'un ni l'autre et ça m'a l'air intéressant. Surtout la représentation intervallaire, m'a l'air puissant ch'truc là. Merci pour les infos grunk |
|
|
|
00
|
|
|
#5 | |||||
|
Invité régulier
![]() Inscription : novembre 2009 Messages : 15 ![]() |
Merci pour vos réponses, en fait j'ai essayé de simplifier au max mes tables pour expliquer le plus rapidement et simplement mon problème. Du coup vous trouvez des erreurs de BDD qui sont du à mon manque d'explication. J'en suis désolé.
Citation:
Citation:
Citation:
Du coup si je décide d'avoir une architecture comme ceci : Code :
J'avais aussi penser à définir un nombre max d'auteur avec $auteur1 jusqu'à $auteur8. J’espère vous avoir éclairer dans mes explications tordu Merci de votre attention |
|||||
|
00
|
|
|
#6 | |||
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Citation:
Code :
SPLObjectStorage n'est pas du tout une obligation , c'est juste pour faire les choses bien jusqu'au bout |
|||
|
00
|
|
|
#7 | ||
|
Membre confirmé
![]() ![]() Lionel ChaumeauDéveloppeur Web Inscription : octobre 2011 Messages : 75 ![]() |
LegGohan,
Citation:
entre docs et rubrique (n-n) entre docs et sous-rubriques (n-n) entre rubriques et sous-rubriques (cf représentation intervallaire de grunk) je vois pas trop comment tu peux en faire l'économie... Citation:
tu as accès à tes auteurs avec un truc du style: si tu veux gérer le nombre d'auteurs max ou les indices de ton tableaux d'auteurs, tout ça se passera dans ta méthode addAuteurs de ta classe Document... |
||
|
|
00
|
|
|
#8 | |
|
Invité régulier
![]() Inscription : novembre 2009 Messages : 15 ![]() |
Mille merci à vous deux, j'ai pu ainsi établir l'architecture de ma classe document avec tous les tableaux d'objet dont j'ai besoin.
Pour le moment je ne fais qu'instancié un objet document et celui ci récupère tout ce dont j'ai besoin. Merci grunk pour ton exemple très claire et qui m'a bien aidé, notamment comment récupérer le tableau d'objet et en afficher le contenu Citation:
Je reviendrais peut être vers vous si j'ai des problèmes dans la création ou modification d'attribut ou tableau d'objet mais je pense avoir une bonne base de travail bien Architecturée ![]() Encore merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com