Question

J'utilise Kohana depuis quelques mois maintenant et je suis encore relativement nouveau dans le style d'organisation de votre code / présentation / db-couche MVC. Malheureusement, bien qu'il existe une documentation abondante sur la manière de créer un contrôleur, d'établir une vue et d'interagir avec une base de données via un modèle, je n'ai pas trouvé beaucoup de ressources traitant des modèles de développement propres et suggérés.

Laissez-moi vous donner un exemple rapide:

Mon dernier projet a un contrôleur, car je ne sais pas si je devrais en faire beaucoup plus que cela ... ou quand je devrais en créer un nouveau. Comment puis-je déterminer exactement quand un nouveau contrôleur est nécessaire, ainsi que lorsqu'un nouveau modèle est nécessaire?

Était-ce utile?

La solution

Je vous conseillerais de consulter d'abord la architecture orientée ressources . Cela ne vous donnera aucune indication directe sur la manière d'organiser votre code. Toutefois, lorsque l’on pense aux ressources, la vie est plus facile pour décider de créer ou non un nouveau contrôleur. Une fois que vous parvenez à identifier une ressource dans votre système, il est généralement bon de créer un modèle associé à un contrôleur, bien que ce ne soit qu'une règle de base.

Quelques points supplémentaires:

  • recherchez des ressources et créez un modèle et un contrôleur pour chacune d’elles (règle générale)
  • n'ayez pas peur de créer des modèles pour des ressources qui ne persistent pas
  • pensez aux contrôleurs en tant que " plomberie " ou " câblage " d’utilisateur au domaine professionnel - leur rôle est de traiter les demandes des utilisateurs et de leur renvoyer la réponse - de les garder aussi minces que possible

Autres conseils

La règle est la suivante: lorsque j’identifie un nouveau type d’article & "; article &"; que mon application. a besoin de gérer, je me pose ces questions:

(1) Les éléments de ce type doivent-ils être persistants?

(2) Y aura-t-il de nombreuses instances de cet élément?

Si la réponse aux deux questions est positive, je conclus que cet élément doit être un modèle (ou un élément de modèle ou une classe de domaine, selon la terminologie de votre structure MVC). Lorsque je définis un nouvel élément de modèle, je définis également un contrôleur qui supportera les quatre opérations de base: créer, récupérer, mettre à jour, supprimer (il est probable que votre infrastructure puisse générer un contrôleur par défaut pour vous).

Vous voudrez peut-être obtenir une copie des "Patterns of Enterprise Application Architecture" de Martin Fowler. La section Présentation Web explique en détail comment structurer votre code lors de l'utilisation d'un framework piloté par Front Controller, comme n'importe quel framework actuel de MVC.

J'aime les petits contrôleurs avec une fonction ou un ensemble de fonctions clairement défini. Cela signifie généralement un contrôleur par page (ou un ensemble de pages similaires). Sur mon site Kohana, CSSMySite , j'ai un blog, des contacts, des CSS et des contrôleurs de publication.

Tout ce que le contrôleur doit faire est de définir le modèle. Le contrôleur de blog interagit avec le modèle de blog pour répertorier plusieurs publications de la base de données. Le contrôleur de publication interagit avec le modèle de blog pour afficher une publication de la base de données.

Chaque fois que des données sont persistantes (articles de blog) ou utilisées plusieurs fois (liste d'états pour une liste déroulante), elles sont intégrées au modèle. Les modèles peuvent être accédés par différents contrôleurs, il n’est donc pas nécessaire de les mapper un par un. Modèle / contrôleur.

Peut-être un bon moyen d’apprendre une bonne programmation MVC est de passer du temps en Ruby-on-Rails. J'ai commencé à utiliser les rails il y a quelque temps et, par conséquent, je comprends maintenant très bien MVC. Je considère les rails comme la quintessence de MVC. À tout le moins, cela pourrait être une façon amusante d’apprendre à MVC ... qu’en pensez-vous?

Voici un exemple de ce que je fais dans mon application Kohana.

J'avais besoin d'une section "dernières nouvelles". J'ai donc configuré un contrôleur, un modèle et une vue intitulés "nouvelles".

Mon contrôleur de nouvelles avait les méthodes index(), feed() et media_releases().

Mon modèle consistait en des requêtes de base de données qui extraient mes données d'actualités d'une base de données MySQL.

Et à mon avis, il y a beaucoup de code HTML avec certains <?php echo $title; ?> et autres.

Existe-t-il une raison pour laquelle vous ne pouvez pas définir de systèmes génériques fonctionnant globalement en utilisant des métadonnées de base de données? Il me semble généralement qu'écrire n'importe quel code pour accéder et afficher des données simples est une redondance inutile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top