Neues von meinem MVC-Framework

Lange habe ich kein neues Kapitel mehr veröffentlicht. Der Grund dafür ist, dass mir ein paar Fehler aufgefallen sind, die ich erstmal beheben musste.

Das Problem mit dem Controller

Unter anderem war es nicht möglich, mehrere Controller zu laden. Das heißt, dass es nur einen Controller für den Inhalt gab. Man konnte keine weiteren Controller einbauen, die sich um Sachen wie die Darstellung eines Menüs (mit Baumstruktur z.B. ;)) oder um die Anzeige einer Shoutbox kümmerten.

MainController und SubController

Das habe ich jetzt geändert. Es gibt jetzt MainController und SubController. SubController können als „permanente SubController“ registriert werden. Das hat zur Folge, dass sie IMMER geladen und ausgeführt werden, außer sie stehen auf der Blacklist.

Die MainController sind dazu gedacht, den Inhalt der Seite zu erzeugen. Man kann im MainController auch SubController registrieren. So kann man z.B. die Generierung des Seiteninhalts auf mehrere SubController verteilen.

Response- und Request-Objekte

Eine weitere Neuerung ist, dass man jetzt nichtmehr direkt auf $_GET oder $_POST zugreift (ist natürlich weiterhin möglich, aber nicht erwünscht :P), sondern das Request-Objekt verwendet.

Wenn man eine Nachricht an den Browser senden will, verwendet man das Response-Objekt. Dieses Objekt ist in der Lage, den HTTP-Status der Antwort und die Header zu verändern. Der größte Vorteil dieses Patterns ist, dass man Header ÜBERALL im Code senden kann. Denn das Objekt sorgt dafür, dass kein Content vor den Headern abgeschickt wird. So vermeidet man den allseits bekannten „Headers already sent“-Fehler.

PreFilter und PostFilter

Weiterhin gibt es jetzt Filter. Es gibt PreFilter, die vor dem Controller ausgeführt werden, und PostFilter, die danach ausgeführt werden. Die Filter werden erst dadurch möglich, dass es Response und Request gibt. Denn sie arbeiten aktiv mit diesen Objekten!

PreFilter sind wunderbar dafür geeignet, einen Autologin zu realisieren. Oder um ungewünschte IPs auszusperren… Eine weitere Anwendung wäre z.B. ein Layout-Switcher. Dieser könnte je nach gesetzter Session-Variable (als Beispiel) ein anderes Layout laden.

PostFilter finden weniger Anwendung. Sie könnten zum Beispiel die Antwort des Skripts komprimieren, falls der Client das unterstützt.

ViewFactory

Eine Sache, bei der ich gerade bin, ist die ViewFactory. Es soll voneinander unabhänige View-Klassen (Z.b. für HTML, PDF, XML, etc.) geben. Um die Sache für den Programmierer einfach zu halten, soll er nicht wissen müssen, mit welcher ViewKlasse er arbeitet. Das heißt, dass alle Views die gleichen Daten entgegennehmen müssen.

Allgemeines zum Tutorial

Ich habe mich dazu entschieden, das Tutorial erst weiterzuführen, wenn alles soweit funktioniert. Es hat sich nämlich schon wieder so viel geändert, dass ich die Hälfte des Tutorials neu schreiben müsste. Und ich bin mir sicher, dass sich auch in Zukunft noch einiges ändern wird.

1 Star2 Stars3 Stars4 Stars5 Stars (Wurde noch nicht bewertet)
Loading...


3 Kommentare zu “Neues von meinem MVC-Framework”

  1. Hy,

    Bin schon sehr gespannt wie es weiter. Würde mich gern auch mit dir über das Projekt unterhalten und Unterstützen.

    Wenn Du Interesse hast kannst du dich bei mir melden.

    Mit freundlichem Gruss

  2. Hi!
    Ich habe deine E-Mail leider erst jetzte gesehen, tut mir leid.
    Ich habe dir mal darauf geantwortet

    Vielen Dank!
    Simon

  3. Die aktuellste Version meines HMVC-Frameworks erhaltet ihr ab sofort immer hier: http://www.net-developers.de/blog/2011/02/13/download-info-shfw-hmvc-framework-in-php/

Hinterlasse einen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

»Informationen zum Artikel

Autor: Simon
Datum: 01.11.2008
Zeit: 16:34 Uhr
Kategorien: Mein MVC-Framework
Gelesen: 14046x heute: 5x

Kommentare: RSS 2.0.
Diesen Artikel kommentieren oder einen Trackback senden.

»Meta