2010-09-06 6 views
2

J'utilise php et structure habituellement mon application dans model-view-controller, donc il est toujours accessible via index.php avec les attributs de classe et de méthode. L'attribut de classe transmis dans le cadre de l'URL spécifie la classe du contrôleur et la méthode simplement la méthode à appeler. Cela semble être assez commun, mais j'ai toujours du mal à déterminer quels contrôleurs dois-je créer. Quelle est la meilleure façon, la plus facile et la plus applicable de décider quels contrôleurs devraient être créés? Je comprends que cela dépend de l'application Web elle-même, mais il doit y avoir une façon de penser générale pour démarrer ce processus.Comment décider des contrôleurs pour une application web?

Répondre

2

J'ai trouvé que les contrôleurs de construction basés sur les objets de votre application fonctionnent bien, et peuvent prendre en charge la plupart des actions que vous voulez pour votre application.

Jetez un oeil à SO - il y a des URL commençant par/questions,/tags,/utilisateurs, etc. Je proposerais un design qui commence par créer un contrôleur différent pour chaque objet./questions (ou/questions/liste) renvoie une liste de toutes les questions./questions/[0-9] + renvoie les détails d'une question particulière avec ce numéro d'identification./questions/ask renvoie l'interface Poser une question. Au fur et à mesure que vous continuez à créer votre application, la méthode controller-based-on-objects ne répondra peut-être pas à tous vos besoins. Par exemple, sur mon site (http://www.wysiap.com), j'ai éventuellement créé un contrôleur/list pour simplifier le mappage d'URL Grails. Mais dans la plupart des cas, j'ai utilisé cette méthode et il est facile de déterminer quel contrôleur doit effectuer différentes actions.

0

Je recommande de penser aux pages dont vous aurez besoin dans vos applications pour accomplir toutes les tâches demandées. Vous regrouperez des tâches similaires sur la même page et créerez autant de pages que vous le souhaitez. Une page peut être découpée en différentes vues pour des actions spécifiques. Dans cette optique, vous pouvez avoir un contrôleur par page. Chaque vue de la page peut avoir sa propre méthode (action) dans le contrôleur. Et à l'intérieur de la méthode de chaque vue, vous pouvez avoir un switch() qui vous permettra d'avoir plusieurs tâches pour la vue. Exemple:

  • index.php (contrôleur de tableau de bord)
  • /-liste de questions (contrôleur QuestionsListe, l'indice d'action, afficher la page entière)
  • /question-list/ajouter (contrôleur QuestionsListe, l'action ajouter, gérer la vue "add" avec des tâches comme show-form, validate-form, insert-question)
  • /profile (Contrôleur de profil, index d'action)
  • /profile/edit (Contrôleur de profil, action edit, gérer tous les tâches demandées pour votre profil)
  • ...

Je conçois la plupart de mes applications web de cette façon et en utilisant Zend-Framework

Questions connexes