Zeitgeist ZMS V3.0
 

MVC Konzept nun auch im ZMS
07.01.2011

Das MVC (Model View Controller) Konzept bietet den Vorteil, dass die Daten (Modell), die Darstellung (View) und die Kontrolle des Ablaufes (Controller) getrennt sind und somit leicht ausgetauscht werden können. In einer Webapoplikation muss auf die weiteren Vorteile des MVC Konzepts (z.B. Benachrichtigung der Darstellung bei Modelländerungen) verzichtet werden. Dennoch mach das Konzept auch im Web Sinn und ist nun auch im ZMS implementiert.
MVC Modell für eine Webapplikation
MVC Modell für eine Webapplikation

Allgemeines

Der Ablauf bei einer Umsetzung des MVC Konzept im Web ist immer etwa gleich:

  1. Der Browser ruft den Controller auf
  2. Der Controller entscheidet was geschehen soll
  3. Der Controller ruft die notwendigen Daten vom Modell ab
  4. Der Controller ruft die Darstellung mit den abgerufenen Daten auf
  5. Die View gibt die Daten formatiert aus

Im ZMS wurde das genau so implementiert mit der Ausnahme, dass das Modell Service und die Darstellung Frontend heisst. Im ZMS wird der Controller im Featurestyle eingetragen und der Controller übernimmt dann die Erstellung des Services und des Frontends. Dazu müssen die Dateien und die darin enthaltenen Klassen korrekt benannt und in einem Ordner gespeichert werden, der so heisst wie der Featurestyle.

Beispiel Featuresytle Newslist:

Dateien:

  • Controller: code/featurestyles/newslist/newslistcontroller.class.php
  • Frontend: code/featurestyles/newslist/newslistfrontend.class.php
  • Service: code/featurestyles/newslist/newslistservice.class.php

Klassen:

  • NEWSLISTCONTROLLER (abgeleitet von FEATURESTYLECONTROLLER)
  • NEWSLISTFRONTEND (abgeleitet von FEATURESTYLEFRONTEND)
  • NEWSLISTSERVICE (abgeleitet von FEATURESTYLESERVICE)

Zwei kurze Codebeispiele im Anschluss sollen den Einsatz des MVC Konzepts im ZMS zeigen.

Beispiel 1: Featurestyle Simpletext

In diesem Beispiel besteht der Featurestyle nur aus einem Wort text. Da die featureeigenen Wörter und Medien immer mitgeladen werden stehen diese bereits zur verfügung und müssen nicht abgerufen werden, womit der Service entfällt. Auch der Controller muss keine Arbeit erledigen da die Basisklasse, sofern die Run-Methode nicht überschrieben wird, die Display-Routine des Frontend aufruft. Die Codes sehen wie folgt aus:

Beispiel 2: Featurestyle Newslist

Im zweiten Beispiel wird eine Liste von News dargestellt. Die News sind im Featurestyle NEWSDETAILCONTROLLER gespeichert. Im Controller werden die Newsfeatures über den Service abgerufen und dann an das Frontend zur Darstellung übergeben. Die Codes sehen wie folgt aus: