5

J'ai demandé il ya quelques temps here de l'aide pour comprendre MVC, puisque je suis très nouveau sur le sujet. Je pensais que j'avais une bonne compréhension de cela, et cela est documenté dans un blog post j'ai écrit récemment sur le sujet. Ma compréhension se résume essentiellement à ceci:MVC: Les objets Model et Entity séparent-ils les concepts?

Contrôleur: Détermine ce qui doit être fait pour répondre à une demande et utilise les modèles dont il a besoin pour collecter/modifier au besoin. C'est essentiellement un gestionnaire pour un processus donné.

Vues: Présentation seulement. Une fois qu'un contrôleur recueille ce dont il a besoin, il crée un type de vue spécifique, lui donne les informations et dit «montrez-le à l'utilisateur, peu importe comment vous le faites».

Modèles: Comportement de l'application. Lorsque le contrôleur lui demande d'extraire ou de modifier quelque chose, il sait comment le faire. Il sait également déclencher d'autres modèles pour faire des tâches connexes (à mon avis, quand un modèle essaie de «voter pour quelque chose» sur StackOverflow, ce modèle sait demander si un badge devrait également être accordé à cause de cela. besoin de s'en préoccuper). Ma question, en supposant que tout cela est plus ou moins précis, est où les objets entité entrent-ils? Les modèles et les entités sont-ils la même chose, chaque objet sachant comment conserver ses propres données, ou les entités sont-elles un concept distinct qui existe seul et qui est utilisé dans toute l'application? Mon argent est sur ce dernier, car cela permettrait aux modèles d'agir indépendamment, alors que les trois couches (modèle, vue et contrôleur) pourraient utiliser les entités pour transmettre des données selon les besoins. De plus, les objets et la persistance de la base de données semblent être des préoccupations qui devraient être séparées.

Pour être honnête, plus je lis sur MVC, plus je suis confus. Je suis sur le point de prendre le concept de base (présentation séparée de la logique) et de le faire fonctionner de la manière qui convient le mieux, sans trop m'inquiéter de l'étiquette "MVC".

Répondre

0

Chaque modèle peut être une entité qui contient des méthodes pour contrôler et utiliser ses données.
Est-ce suffisant?

+0

Je suis désolé, mais je ne suis pas sûr de ce que vous dites. Pourriez-vous reformuler cela? – AgentConundrum

+0

vraiment désolé coz de mon anglais ...: P –

+1

Pas de soucis. Donc, vous dites que les modèles et les entités sont la même chose? Cela m'étonne un peu puisque, comme je l'ai dit dans ma question, il semble que l'entité elle-même ne devrait pas avoir à se préoccuper de sa propre persistance. – AgentConundrum

5

Oui!

Mon argent est sur ce dernier, car cela permettrait modèles d'agir indépendamment

Vous ne voulez pas lier votre point de vue à une entité, parce que si la vue a également besoin d'un autre morceau de données, vous le feriez à votre Entité. Le modèle est entièrement en faveur du point de vue, et il est soucieux de soutenir ce point de vue et rien d'autre. Par exemple, vous montrez une liste de vos entités, quelles sont les autres données dont vous pourriez avoir besoin? Numéro de page actuel? Nombre total de pages? Un message personnalisé à afficher?

C'est pourquoi vous devez vous lier à un modèle auquel vous pouvez ajouter librement des éléments de données selon vos besoins.

Mise à jour

Voici une explication de MVC dans l'action ...

Le contrôleur reçoit toutes les données nécessaires à la demande et il met dans le modèle. Il passe ensuite le modèle à la vue.

La vue traite ensuite de la disposition des données dans le modèle.

+0

Je pensais qu'un contrôleur appellerait autant de modèles que nécessaire pour obtenir ce dont il a besoin, et les modèles généreraient des entités à renvoyer au contrôleur. Lorsque le contrôleur a collecté ce dont il a besoin, il transmet la collection d'entités que le modèle lui a donnée et la vue utilise ces entités pour générer sa sortie. ie le contrôleur demande au modèle une question, qui donne au contrôleur une entité de question, qui envoie l'entité à voir, qui a quelque chose comme '<? php echo $ question-> getQuestionTitle?>' ie l'entité est la source les vues Les données. Est-ce correct? – AgentConundrum

+0

Je vais vous réexpliquer ce que vous venez de dire dans une mise à jour de cette réponse ... – Fenton

Questions connexes