MVC - Model!?

@Gumbo:
Ganz verstehe ich das nicht.. Nach Deiner Logik würde ja die View (bei einer Zustandsänderung, d.h. zB. Submit eines Benutzers) die Daten direkt an das Model übermitteln, was in PHP ja prinzipiell nicht möglich ist (wenn ich Ajax hier mal ausschließe).

Damit die Zustandsänderung überhaupt greifen kann, muss ja ein POST oder GET über einen neuen Seitenaufruf geschehen, was wiederum den Controller zur Mitarbeit verpflichtet.

Verstehe ich das also richtig, dass die View mit dem Model ausschließlich über den Controller kommunizieren kann. Gilt natürlich nur für serverbasierte Sprachen...

Ciao,
Mike
 
Zum Thema aufweichen des MVC: zwar aus der Java-Welt, aber eventuell das weswegen dieses Topic eröffnet wurde:

Modifizierte MVC-Architektur für Swing

Das MVC-Konzept trennt ganz klar die Bereiche ab, führt aber bei praktischer Realisierung zu zwei Problemen. Das erste betrifft die Entwickler der Komponenten. Meistens sind View und Controller eng verbunden, sodass es zusätzlichen Schnittstellenaufwand für die Implementierung gibt. Implementieren wir etwa eine Textkomponente, müsste sich diese um alle Eingaben kümmern und diese dann an die Darstellung weiterleiten. Das zweite sich daraus ergebende Problem ist der erhöhte Kommunikationsaufwand zwischen den Objekten. Wenn sich Ergebnisse in der Darstellung oder dem Modell ergeben, führt die Benachrichtigung immer über den Controller.

Es macht demnach Sinn, VC zu einer Komponente zu verschmelzen um die komplexe Interaktion zwischen View und Controller zu vereinfachen. Genauso haben es die Entwickler der JFC daher gemacht. In Swing findet sich keine Reinform des MVC, sondern eine Verquickung von View und Controller. Durch diese Vereinfachung lassen sich die Benutzeroberflächen leichter programmieren, wobei wir nur wenig Flexibilität einbüßen. Das neue Modell wird anstatt MVC auch Model-View-Presenter (MVP-Pattern) genannt. Betrachten wir das MVP-Konzept am Beispiel einer Tabellenkalkulation. Die Daten in einem Arbeitsblatt entsprechen den Daten, die unterschiedlich visualisiert werden können; klassisch in einem Tabellenblatt und modisch in einem Diagramm. Ein Modell kann problemlos mehrere Sichten haben. Eine Änderung der Daten im Tabellenblatt führt nun zu einer Änderung in den internen Daten und umgekehrt führen diese zu einer Änderung des Diagramms.

direkt aus: http://www-sst.informatik.tu-cottbus.de/~db/doc/Java/GalileoComputing-JavaInsel/java-16.htm
 
@Layna:
Nein, das war eigentlich nicht der Grund, sondern vielmehr die Verschmelzung / Trennung von Model und Controller.

Ich habe mir selbst ein MVC Framework auf basis von http://www.phpit.net/article/simple-mvc-php5/ gestrickt. In diesem Tutorial wird das Model zum Beispiel gar nicht implementiert sondern diese Funktion gleich im Controller abgefrühstückt.

Das Mischen von Controller und View kann ich mir überhaupt nicht vorstellen. Der Controller nimmt ja die Requests und Actions entgegen, und kümmert sich um die Steuerung (wie der Name schon sagt). Die View ist ja der reine Output an den User (und wird je nach Aktion geladen). Wie man diese zwei mischen soll ist mir überhaupt nicht klar...

Ciao,
Mike
 
Hi,
nur als kleine Ergänzung:
Das Model nicht mit dem Controller zu vermischen, macht z.B. Sinn, weil man dann die selben Informationen mit den gleichen Queries auf verschiedene Arten ausgeben kann: Bspw. als HTML und RSS.

Die View ist allerdings nicht nur Output, sondern auch Input, da der User ja Daten per Formular etc. eingeben kann.

Gruß

.:lay-z-cow:.
 
Das sehe ich genauso... Mischt man Controller und View, würde das ja keinen Sinn machen. Da lasse ich mir noch eher das Mischen von Controller und Model einreden.
 
Na ja, Du könntest Controller und view mischen, indem Du in deinem Template verschiedenen Usern verschiedene Inhalte anzeigst.

PHP:
{if $usr->accessgroup=="admin}
  <table.....userliste>
{else}
  Sie haben nicht die erforderliche Berechtigung
{/if}

Ich habe nie behauptet, dass das Sinn macht und wehre mich vehement gegen jede Behauptung in dieser Richtung ;)

Defakto macht das den ganzen Ansatz kaputt.

Aber möglich ist's.

Viele Grüße
jrook
 
Klar, man könnte auch alle drei teile mischen und "back to the roots" ala PHP3 arbeiten :)
War ja auch kein Vorwurf, hat mich nur gewundert ;)
 
Guten Morgen,

Ich hole den Thread mal etwas rauf, da ich noch einige Fragen haben. Ich habe nun eine Datenbank-Klasse, eine Template-Klasse und zum Beispiel eine Login-Klasse. Die Login-Klasse validiert die Benutzereingaben und prüft diese, über die Datenbank-Klasse. Über die Template-Klasse werden dann etwaige Fehler ausgegeben. Sollten alle Eingaben korrekt sein, leitet die Login-Klasse den Benutzer weiter.
Arbeite ich also jetzt schon in Prinzp, mit einem MVC?
Eventuell hat auch schon jemand ein deutsches (oder in einfachen englisch) geschriebenes Tutorial gefunden, was auf keinen Framework basiert?

Gruß Thomas
 
Zurück