Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > MVC
MVC Forum de support sur le développement d'applications de type modèle-vue-contrôleur avec Zend Framework ainsi que vos questions sur les plugins, les helpers etc. Avant de poster -> Cours MVC, FAQ ZF Controller
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/11/2007, 11h26   #1
Membre du Club
 
Développeur Web
Inscription : décembre 2005
Messages : 110
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2005
Messages : 110
Points : 45
Points : 45
Par défaut Découpage des controllers

Bonjour

J'aimerais savoir comment vous déterminez le périmètre et le contenu de vos controllers ? Plus clairement, comment décidez-vous du découpage de vos controllers, c'est-à-dire ce qui va appartenir plutôt à un controller qu'à un autre ? En fonction de vos IHM ? En fonction de la bdd ? En fonction de la couche model ?

Pour prendre un exemple concret, j'ai une interface avec un menu découpé selon les principales fonctionnalités de mon application, en voici un extrait qui concerne la gestion de dossiers et de comptes (objets métier de mon appli) :


J'ai commencé à faire le squelette des classes de mon framework MVC, et je me penche sur le cas des controllers. J'ai hésité puis j'ai crée pour l'instant 2 controllers :
DossierController et CompteController.

Qu'en pensez-vous ? Comment vous y prenez vous de votre côté ?

Merci d'avance !
fadeninev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2007, 00h46   #2
Nouveau Membre du Club
 
Inscription : avril 2007
Messages : 38
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : avril 2007
Messages : 38
Points : 33
Points : 33
Tout dépends de l'application que tu veux coder. L'important est de découper ton application en "grandes catégories" qui vont correspondre à tes contrôleurs. Par exemple : Accueil (Index), Gestion des membres (Members), Messagerie interne (PrivateMsg), Système de news (News), Espace de téléchargement (Downloads), etc.
Vouloir faire correspondre Un model à Un contrôleur n'est pas efficace, car souvent les models doivent êtres liés pour remplir les tâches que l'on veux (par exemple l'accueil sera sans doute lié aux news, la messagerie privée aux membres, ...).
Psykocrash est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2007, 15h55   #3
Membre du Club
 
Développeur Web
Inscription : décembre 2005
Messages : 110
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2005
Messages : 110
Points : 45
Points : 45
Merci pour ta réponse Psykocrash Je pense que je suis partie sur ce principe de "grandes catégories". Je verrais si je dois affiner un peu ensuite ou pas !
fadeninev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2007, 13h41   #4
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 428
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 428
Points : 2 815
Points : 2 815
Je part de la spécification générale de mon application pour déterminer les packages (sens UML). Ils vont donner les modules de l'application.

dans les spécifications détaillés je vais me retrouver dans chaque packages de nouveau package qui représente des unité applicative. en ce sens que ce qu'elle manipule représente un seul et même concept. l'interface de ce package et plus ou moins l'ensemble des action que l'on peut faire sur ce package généralement dans ce package se trouve plusieurs classes du modèle manipulées par cette unité. c'est ainsi que je détermine mes contrôleurs.

pour aller plus loin la conception à partir de là va déterminer les classer métier (le modèle) de l'application.

un bon moyen de déterminer la notion d'unité fonctionnelle est de voir quels les élément du modèle qui se retrouve dans plusieurs untiée. normalement ces éléments doivent obligatoirement apparaître dans l'interface de chaque unité où ils apparaissent. si ce n'est pas le cas c'est qu'on a une fuite d'étanchéité de l'unité. et que donc nos unité ne son pas si indépendante que ça. il est probable que la conception est à revoir.

de même la frontière des modules doit clairement définir les éléments qui sont à l'interface.

l'interface utilisateur ne dois pas entrer dans le choix des contrôleurs mais au contraire en découler. des le contrôleur qui définit quoi afficher. bien que parfois pour faciliter le travail certains regroupements voient le jours.

La base de donnée ne doit elle absolument pas entrer dans la conception du contrôleur. la base doit être conçue pour répondre au besoin du modèle. Il n'y a à priori aucunes raison pour que le modèle de données de la base soit le reflet du modèle objet de l'application. le modèle de donnée doit être conçu pour servir au mieux le modèle applicatif. et cela nécessite une conception à part entière.
la distance entre le modèle de donnée et le modèle application est un premier éléments qui rends la conception des contrôleurs difficile à partir de la base. mais il y a aussi une différence entre ce qu'est le modèle de donnée applicatif et l'usage qu'on en fait dans l'application. et cette différence rend le découpage en contrôleur encore plus difficile à partir de la base.

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 10h35   #5
Membre du Club
 
Développeur Web
Inscription : décembre 2005
Messages : 110
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2005
Messages : 110
Points : 45
Points : 45
Merci à toi d'avoir pris le temps de me répondre Sekaijin
fadeninev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h37.


 
 
 
 
Partenaires

Hébergement Web