5

Ich fragte here vor einiger Zeit für etwas Hilfe beim Verständnis von MVC, da ich sehr neu zu dem Thema bin. Ich dachte, ich hätte ein gutes Verständnis davon, und das ist in einer blog post Ich schrieb kürzlich zu diesem Thema. Mein Verständnis läuft im Grunde darauf hinaus:MVC: Sind Modelle und Entity-Objekte getrennte Konzepte?

Controller: Bestimmt, was getan werden muss, um eine Anfrage zu erfüllen, und nutzt alle Modelle, die benötigt werden, um nach Bedarf zu sammeln/ändern. Es ist im Grunde ein Manager für einen bestimmten Prozess.

Aufrufe: Nur Präsentation. Sobald ein Controller erfasst, was er benötigt, erstellt er einen bestimmten Ansichtstyp, übergibt ihm die Informationen und sagt: "Zeigen Sie dies dem Benutzer, wie Sie es auch tun".

Modelle: Verhalten der Anwendung. Wenn der Controller es bittet, etwas zu extrahieren oder zu modifizieren, weiß es, wie es geht. Es weiß auch, andere Modelle zu triggern, um damit verbundene Aufgaben zu erledigen (in meinem Verständnis, wenn ein Modell versucht, auf StackOverflow "für etwas zu stimmen", fragt dieses Modell, ob ein Ausweis auch dafür gewährt werden sollte. Der Controller tut dies nicht muss sich darum kümmern).

Meine Frage, ob all das mehr oder weniger genau ist, wo kommen Entitätsobjekte her? Sind Modelle und Entitäten dasselbe, wobei jedes Objekt weiß, wie es seine eigenen Daten beibehalten kann, oder sind Entitäten ein eigenständiges Konzept, das für sich allein existiert und in der gesamten Anwendung verwendet wird?

Mein Geld ist auf dem letzteren, da dies Modelle unabhängig voneinander agieren lassen würde, während alle drei Schichten (Modell, Ansicht und Controller) die Entitäten verwenden könnten, um Daten nach Bedarf weiterzugeben. Außerdem scheinen Objekte und Datenbankpersistenz Probleme zu sein, die getrennt werden sollten.

Um ehrlich zu sein, je mehr ich über MVC lese, desto verwirrter werde ich. Ich bin bereit, einfach das Kernkonzept (separate Präsentation aus der Logik) zu nehmen und damit zu laufen, wie es sich auch anfühlt, und sich nicht zu sehr um das Label "MVC" zu kümmern.

Antwort

0

Jedes Modell kann eine Entität sein, die einige Methoden zur Steuerung und Verwendung seiner Daten enthält.
Ist es genug?

+0

Es tut mir leid, aber ich bin mir nicht ganz sicher, was du sagst. Könnten Sie das anders formulieren? – AgentConundrum

+0

wirklich leid, coz von meinem Englisch ...: P –

+1

Keine Sorge. Also, Sie sagen, dass Modelle und Entitäten dasselbe sind? Ich bin ein wenig überrascht, da (wie ich in meiner Frage gesagt habe) es scheint, dass die Entität selbst nicht über ihre eigene Beharrlichkeit besorgt sein sollte. – AgentConundrum

5

Ja!

Mein Geld ist auf dem letzteren, da diese Modelle unabhängig erlauben würde, zu handeln

Sie wollen nicht Ihre Ansicht zu einer Entität binden, denn wenn der Blick muss auch ein anderes Stück Daten, müssten Sie es zu Ihrer Entität. Das Modell unterstützt die Sichtweise vollständig und ist darauf ausgerichtet, diese Sichtweise und nichts anderes zu unterstützen.

Zum Beispiel zeigen Sie eine Liste Ihrer Entitäten an, welche anderen Daten benötigen Sie? Aktuelle Seitennummer? Gesamtzahl der Seiten? Eine benutzerdefinierte Nachricht wird angezeigt?

Deshalb sollten Sie an ein Modell binden, dem Sie Datenelemente nach Bedarf hinzufügen können.

aktualisieren

Hier ist eine Erklärung von MVC in Aktion ...

Der Controller für die Anforderung benötigt alle Daten erhält und es in das Modell setzt. Es übergibt dann das Modell an die Ansicht.

Die Ansicht behandelt dann das Layout der Daten im Modell.

+0

Ich dachte, dass ein Controller so viele Modelle wie nötig aufrufen würde, um das zu bekommen, was er benötigt, und die Modelle würden Entitäten generieren, die an den Controller zurückgegeben werden. Wenn der Controller gesammelt hat, was er benötigt, übergibt er die Sammlung von Entitäten, die das Modell ihm gegeben hat, und die View verwendet diese Entitäten, um ihre Ausgabe zu generieren. dh der Controller fragt das Modell nach einer Frage, wer gibt dem Controller eine Frage-Entität, wer sendet die Entität zur Ansicht, die etwa so aussieht: <? php echo $ question-> getQuestionTitle?> 'dh die Entität ist die Quelle der Views Daten. Ist das richtig? – AgentConundrum

+0

Ich werde Ihnen in einem Update auf diese Antwort noch einmal erklären, was Sie gerade gesagt haben ... – Fenton

Verwandte Themen