|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Nicolas TSCHAENNDéveloppeur Web/Python/PHP Inscription : mai 2006 Messages : 244 ![]() |
Bonjour à tous!
Je développe des gros projet web, beaucoup de page, beaucoup de requête! J'utilise bien sur le model MVC, mais parmi ces trois lettres, l'une me dérange! le MODEL! Dans mes models, chaque table de ma bd est représenter par une class. Dans chaque class je peut accéder à d'autre class par des getters! Mon problème c'est que chaque fois que je fait un get quelque chose, ce dernier fait une requete pour récupérer les infos! Par exemple, j'ai un produit à afficher: - Je récupère mon produit --> une requete - Je fait $produit->getDescription($langue) --> une requete - J'ai donc un Id de traduction de description, et donc une dernière requête à faire $traduction->getText() qui me renvoi enfin la description qu'il me faut dans la langue que je veut! J'aimerais savoir s'il existe des techniques de conception de model qui permette de récupérer toute les infos avec une seul requête en passant par les getters. Exemple: Je fait Code :
$produit->getDescription($langue)->getText() Quelqu'un connait-il un outil de ce type? Merci.
__________________
About.me /*********************** Aucune responsabilité n'est engagée sur la lisibilité du message ou les éventuels dommages qu'il peut engendrer. Les fautes d'orthographes sus-citées sont déposées auprès de leurs propriétaires respectifs et soumis au copyright. Toutes copies sera sévèrement désapprouvé. ************************/ |
|
10
|
|
|
#2 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Très bonne question, ça mérite +1.
En effet il existe plusieurs design patterns qui répondent à cette problématique, je ne les connais pas tous mais je vais essayer de répondre: - Active Record, qui lie tes objets PHP à un média (en l'occurence un tuple d'une table) et fournit les getters setters avec écriture et rafraichissement à chaque modification: http://www.martinfowler.com/eaaCatal...iveRecord.html C'est un design pattern lourd et coûteux en temps d'éxecution et en charge. - Lazy Loading, qui ne va chercher les données sur le média qu'en dernier recours, mets toutes les modifications en cache et ne réplique sur le média que lors que c'est nécéssaire: http://martinfowler.com/eaaCatalog/lazyLoad.html - Adapter, qui est prévu pour faire correspondre une interface à une autre, mieux connu sous le nom de wrapper, en PHP il existe des techniques (détaillées dans les tutos de developpez.com) pour faire des fread fwrite directement sur la base de donnée: http://en.wikipedia.org/wiki/Adapter_pattern - Decorator, qui permet de donner plus de responsabilité à une classe de base, que tu pourrais appliquer à PDOStatement par exemple pour la lecture et l'écriture sur une table: http://en.wikipedia.org/wiki/Decorator_pattern Personnellement j'utilise un adapter pour mes classes modèle: chaque classe possèdent 5 instances internes responsables de la lecture et de l'écriture. Le point d'orgue du design pattern, c'est que ta classe modèle ne connait même pas le média sur lequel elle écrit, ce sont les adaptateur qui s'en chargent. --------- Il existe également ce qu'on appelle des ORM (Objet Relationnal Mapper) qui sont des libraries toutes faites permettant de mapper une structure de base de données relationnelle sur un modèle Objet: http://en.wikipedia.org/wiki/Object-relational_mapping Pour PHP on citera Doctrine et Propel, qui sont tout deux utilisé par le célèbre Symphony, tu trouvera toute la doc qu'il te faut sur leurs sites respectifs.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
10
|
|
|
#3 |
|
Membre actif
![]() Nicolas TSCHAENNDéveloppeur Web/Python/PHP Inscription : mai 2006 Messages : 244 ![]() |
Merci beaucoup!
Il me semble que doctrine correspond parfaitement à se que je recherche! Je vais approfondir le sujet!! Merci beaucoup.
__________________
About.me /*********************** Aucune responsabilité n'est engagée sur la lisibilité du message ou les éventuels dommages qu'il peut engendrer. Les fautes d'orthographes sus-citées sont déposées auprès de leurs propriétaires respectifs et soumis au copyright. Toutes copies sera sévèrement désapprouvé. ************************/ |
|
00
|
Copyright © 2000-2012 - www.developpez.com