Seit wenigen Tagen befinden sich die überarbeiteten Zend_Controller Komponenten im Core des Zend Frameworks, also im “library” Pfad. Das bedeutet, dass sie beim nächsten Release auf jeden Fall mit dabei sein werden. Im Rahmen meiner Übersetzungsarbeiten für das Zend Framework Manual habe ich mich dann gestern das erste Mal etwas intensiver mit den neuen Möglichkeiten beschäftigt und ich muss sagen: ich bin begeistert!
Wer von einem älteren Release umsteigen möchte, findet für den ersten Einstieg eine Migrationsanleitung. Wenn man die neuen Möglichkeiten nicht nutzen möchte, braucht man fast nichts zu ändern. Aber man verpasst dadurch die neuen Möglichkeiten.
Neu sind diverse Interfaces und abstrakte Klassen, die es dem Entwickler erleichtern, dass vorhandene System weiter an die eigenen Bedürfnisse anzupassen. So lässt sich der Dispatcher leicht erweitern, um die Action Controller Klassen in verschiedenen Verzeichnissen verwalten zu können. Zend_Controller_RewriteRouter hilft bei der Ansteuerung des richtigen Unterverzeichnisses.
Aber Zend_Controller bietet in seiner Grundkonfiguration bereits viele neue Möglichkeiten. Mit Hilfe von Request und Response Objekten, die für verschiedene Umgebungen wie HTTP oder CLI bereit stehen, kann das Zend_Controller System besser mit dem Client und der entsprechenden Umgebung interagieren. Die eher nicht sehr nützlichen Dispatcher Tokens wurden wieder abgeschafft und durch das genannte Request Objekt ersetzt, auf das während des gesamten Dispatcher Prozesses zugegriffen werden kann. Ich habe es zwar noch nicht getestet, aber Zend_Controller_RewriteRouter soll nun auch ohne mod_rewrite funktionieren.
Außerdem muss man in seinen Action Controller Klassen nun nicht mehr zwingend eine indexAction Methode definieren, auch wenn dies weiterhin empfohlen wird. Die Plugins müssen nun nicht mehr das Zend_Controller_Plugin_Interface implementieren, sondern müssen lediglich Zend_Controller_Plugin_Abstract erweitern. Zudem sind die Plugins endlich auch ausführlich dokumentiert.
Im Zuge der Umbauarbeiten der Zend_Controller Komponenten gab es auch Verbesserungen an den Zend_View Komponenten. Zum einen kann man nun eigene Verzeichnisse und Namensräume für die Zend_View_Helper Klassen verwenden. Zum anderen bietet das Zend_View_Interface die Möglichkeit, die Template Engine seiner Wahl an des Zend Framework anzubinden. Beispielhaft wird in der Dokumentation Smarty angebunden, es funktioniert aber genauso gut mit anderen Template Engines. Für Entwickler, die eine eigene Template Engine verwenden, bietet dies eine einfache Möglichkeit, diese weiter mit dem Zend Framework zu verwenden.
Wer wie ich keine Geduld hat, sollte sich den aktuellen Snapshot downloaden und installieren. Die aktuelle Dokumentation befindet sich ebenfalls in dem Snapshot, wenn du dir die “All languages” Version holst, hast du sogar schon die deutsche Übersetzung dabei. Einziges Problem ist, dass du dir die Dokumentation auf deinem Rechner noch manuell erstellen lassen musst. Wie das funktioniert, findest du in dieser Anleitung. Eine etwas ältere Version der Dokumentation für die neuen Zend_Controller Komponenten findest du auch noch im Wiki.