|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre confirmé
![]() ![]() |
Bonjour j'ai une question concernant la modélisation des classes en PHP
Imaginons une classe User et une classe Adresse un utilisateur posséde N adresses est-il plus judicieux de faire : Code :
Code :
Merci d'avance pour votre aide !
__________________
Gnarf ! www.uni-d.net (Wamp MSS) - Mon C.V. - Mon Blog .NET {VS 2010 && LINQ} && PHP {(Zend Studio || Notepad++) && (WAMP || WAMP mss)} && Multimédia {Flash CS5 && Photoshop CS5} Pensez au TAG
|
||||
|
|
00
|
|
|
#2 | |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Hello
Citation:
Non seulement la classe User doit pouvoir renvoyer une collection d'addresses par User::getAdresses mais elle devrait aussi porter cette collection dans un attribut. Il n'es pas faux non plus de permettre à partir d'une adresse de retrouver l'utilisateur avec Adresse::getUsers() (je mets au pluriel partant du principe que des utilisateurs peuvent partager une adresse, donc la classe Adresse devra renvoyer une collection d'utilisateur). Pour les collections, je te recommande un SplObjectStorage, c'est fait pour ça En tout cas, pas de Adresse::getAdresses($id_user) car ce sont les Utilisateurs qui portent les addresses et non pas l'inverse. Cela ne t'empêche pas de faire quelque chose du style Code :
Addresse::search(array('id_user' => $user->id));
__________________
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 confirmé
![]() ![]() |
OK donc si je comprends bien il faut donc déclarer la fonction getAdresses dans ma classe User.
Ma question va peut-être paraître bête mais dans quel cas utiliser une méthode statique ou une méthode de classe ?
__________________
Gnarf ! www.uni-d.net (Wamp MSS) - Mon C.V. - Mon Blog .NET {VS 2010 && LINQ} && PHP {(Zend Studio || Notepad++) && (WAMP || WAMP mss)} && Multimédia {Flash CS5 && Photoshop CS5} Pensez au TAG
|
|
|
00
|
|
|
#4 | ||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Une méthode de class (statique) est une méthode qui n'a pas besoin d'une instance pour être invoquée. Il n'y a pas vraiment de "cas" pour lesquels il est mieux de mettre une méthode de classe plutôt qu'une méthode d'instance, seulement sache que PHP éxécute les méthodes de classe 4x plus vite que les méthodes d'instance.
Un exemple de méthode d'instance est un constructeur User::__construct ou bien User::getName car la propriété name n'est accessible que dans le contexte d'instance. Un exemple de méthode de classe est User::getUsers() (factory d'users) qui permet de récupérer une map d'instances User. Les méthodes de classes peuvent être appellées depuis un contexte d'instance. Exemple: Code :
__________________
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
|
|
|
#5 |
|
Membre confirmé
![]() ![]() |
Oui oui merci je connais bien la différence mais c'est toujours bon d'avoir un rappel !
Ma question est pour l'exemple cité plus haut : Dois-je utiliser une fonction statique ou non pour récupérer la liste des adresses ? Quelle est la "meilleure" solution ?
__________________
Gnarf ! www.uni-d.net (Wamp MSS) - Mon C.V. - Mon Blog .NET {VS 2010 && LINQ} && PHP {(Zend Studio || Notepad++) && (WAMP || WAMP mss)} && Multimédia {Flash CS5 && Photoshop CS5} Pensez au TAG
|
|
|
00
|
|
|
#6 | |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
__________________
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
|
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() ![]() |
c'est un peu ce que j'imaginé mais je voulais en discuter pour avoir des avis.
Merci bcp !
__________________
Gnarf ! www.uni-d.net (Wamp MSS) - Mon C.V. - Mon Blog .NET {VS 2010 && LINQ} && PHP {(Zend Studio || Notepad++) && (WAMP || WAMP mss)} && Multimédia {Flash CS5 && Photoshop CS5} Pensez au TAG
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com