[PHP POO] - Récupérer enregistrements table

Fermé
Didier - 20 déc. 2010 à 14:28
Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 - 20 déc. 2010 à 18:05
Bonjour à tous !

Je vous expose mon souci : je ne suis pas très à l'aise en POO PHP et je me confronte actuellement à un problème :

J'ai créé une classe User pour manipuler mes utilisateurs. Juste là tout fonctionne bien, j'ai implanté des méthodes pour modifier le nom, le pseudo, pour insérer en base etc. Cependant, je ne sais pas comment afficher mon listing d'utilisateur sur mon site.

J'ai actuellement un dossier qui recense mes fichiers faisant office de contrôleur et un dossier qui recense mes classes faisant office de modèle en quelque sorte. Mais implanter une fonction getAllUsers dans ma classe n'est pas très logique, vu que ma classe, une fois instanciée, représente un objet user, donc un seul user et pas toute une liste...

J'hésite entre : faire ma requête SQL dans mon contrôleur (donc pas logique) et de créer dans ma boucle while un objet pour chaque enregistrement ou d'implanter dans ma classe une fonction getAllUsers (toujours pas logique) pour récupérer tous mes utilisateurs.

Auriez-vous une idée à me soumettre ?

Merci beaucoup :) !

Toutes les propositions sont les bienvenues
A voir également:

1 réponse

Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 52
Modifié par Giorgiolino le 20/12/2010 à 18:06
Bonjour,

il te faut lorgner du côté de la notion de SERVICE.
Une classe de service te permettra d'effectuer des requêtes renvoyant des objets du type qu'elle gère.

Exemple :

Classe de base = User

Classe de service = User_Service
La classe User_Service est un singleton. Tu devras donc avoir une méthode statique te permettant d'en récupérer une instance, par exemple User_Service::getInstance();

Dans cette classe tu définis les méthodes dont tu as besoin qui te renverront des collections d'objets User.
Par exemple User_Service::getConnected() qui pourrait te renvoyer un tableau d'objets User ayant un paramètre connected valant true (je dis n'importe quoi).
Bien sûr c'est dans cette méthode que tu définis la requête vers la base en utilisant si possible un ORM pour faire propre sinon au pire la requête en dur. La requête en dur c'est moyen mais puisque le service encapsule la récupération de tes objets user et que tu passeras toujours par lui, tu as un point d'entrée unique, ce qui limite les dégats des fois que ton schéma de base de données change, etc.

Et ainsi de suite.

Pour en savoir un peu plus, je t'invite à lire cette documentation du composant Symfony d'Injection de dépendances :
http://components.symfony-project.org/dependency-injection/trunk/book/03-Service-Container

Si à l'issue il te venait d'autres questions, n'hésite pas.


Bon courage.
0