Zend_Column 5.11
Kommentare

Vier neue Releases und einige sehr interessante Entwicklungen für das Zend Framework 2 haben die letzten Wochen bestimmt. Wer sich besonders für Themen wie Model View Controller, Module, Doctrine2 oder

Vier neue Releases und einige sehr interessante Entwicklungen für das Zend Framework 2 haben die letzten Wochen bestimmt. Wer sich besonders für Themen wie Model View Controller, Module, Doctrine2 oder auch das Packaging interessiert, findet dazu in dieser Kolumne einiges an Neuigkeiten. Ansonsten geht das Rätselraten über den Releasetermin für die erste Betaversion vom ZF2 munter weiter.

MVC-Anforderungen für ZF2

Anfang Mai 2011 hat Projektleiter Matthew Weier O’Phinney im Zend-Framework-Wiki ein Dokument veröffentlicht, um alle Ideen und Vorschläge für die Anforderungen an das neue MVC-Modell des ZF2 zu sammeln. Die Anforderungen sind in die Schichten Controller, View und Model sowie Tooling und Migration zusammengefasst, wobei die Controller-Schicht nochmal in Request, Response, Router, Dispatcher, Action Controller, Serverklassen, Bootstrapping und Module unterteilt ist. Dem ursprünglichen Dokument ist zu entnehmen, dass die Anforderungen für die Model-Schicht auch weiterhin keine eigene Model Implementation enthält. Die Arbeiten an Zend_Model wurden ja bereits vor einiger Zeit eingestellt. Stattdessen wird es Unterstützung für Doctrine2 und einen Satz an Interfaces geben. Zudem sollen der View Layer sowie das Filtern und Validieren von Daten von Zend_Form abgekoppelt werden.

Die Diskussion, die daraufhin entbrannte, umfasst mittlerweile fast 100 Kommentare und ist sehr lesenswert, wenn man sich für die Details des neuen MVCs interessiert. Sie war bei Redaktionsschluss noch nicht abgeschlossen. Das wird wohl erst der Fall sein, wenn alle gesammelten Anforderungen in einem Proposal festgelegt worden sind. Es folgt eine Liste ausgewählter Punkte aus der Diskussion, die keinen Anspruch auf Vollständigkeit erhebt:

  • Mehrfach wurde angemerkt, dass weniger Rücksicht auf die Einfachheit der Migration von ZF1, aber mehr auf „gute Lösungen“ im ZF2 gesetzt werden soll.
  • Für die Wiederverwendbarkeit von statischen Dateien wie Grafiken, CSS und JavaScript in Modulen wurde angeregt, dass diese in einem Modul abgelegt werden sollten. Das war in ZF1 nicht der Fall.
  • Module sollen im ZF2 Bürger erster Klasse werden und nicht wie in ZF1 ein Anhängsel, das nur wenig mehr als eine Sammlung von Action Controllern, View-Skripten und Models bereitstellt.
  • Das Erlernen des ZF2 soll so einfach wie möglich gehalten werden. Das betrifft vor allem die Dokumentation, aber auch die MVC-Implementierung sollte Anfängern schnell zugänglich sein.

Wie bereits erwähnt, stellen dieses Dokument und die dazugehörige Diskussion erst ein Brainstorming zu dem komplexen Thema für das ZF2 MVC dar. Die Ideen werden derzeit gesammelt und bewertet. In den nächsten Wochen wird es als Ergebnis voraussichtlich ein entsprechendes Proposal geben. Bis es dann implementiert ist, wird wieder einige Zeit ins Land gehen. Matthew hat jedoch mehrmals erwähnt, dass er bereits einen lauffähigen Prototyp hat, in dem die meisten Anforderungen bereits umgesetzt sind. Erst wenn das neue MVC für ZF2 größtenteils abgeschlossen ist, kann übrigens abgesehen werden, wann mit einem realistischen Termin für das erste Betarelease vom ZF2 zu rechnen sein wird. Ein produktives ZF2-Release ist damit auch weiterhin noch schwieriger vorauszusagen.

Doctrine2

Ebenfalls im Wiki werden die Anforderungen für die Unterstützung von Doctrine2 gesammelt. Ergänzungen dazu sind weiterhin willkommen. Bis Redaktionsschluss wurden folgende Elemente vorgeschlagen:

  • ein Resource-Plug-in für den Bootstrap-Prozess
  • Adapter für ZendAuth, ZendNavigation, ZendPaginator und ZendQueue
  • Treiber für ZendCache
  • Writer für ZendLog
  • Doctrine Validator für ZendValidateDb
  • Provider für ZendTool
  • Eigener Session SaveHandler
  • ACL Provider für ZendAccess
Packaging

In der Contributors-Mailingliste gab es eine intensiv geführte Diskussion zum Thema Packaging. Beim Packaging geht es darum, wie das Zend Framework 2 später installiert werden können soll. Bisher werden vor allem tar.gz– und zip-Pakete mit allen Komponenten zum Download angeboten. Mit dem ZF2 soll es auch möglich sein, nur ausgewählte Komponenten zu installieren. In der Diskussion wurden die Vor- und Nachteile von sieben möglichen Optionen diskutiert:

  • PEAR Installer
  • Pyrus Installer (PEAR2)
  • git
  • Symfony 2 Bundle Manager
  • Phar Distribution
  • Source-File Distribution (tar.*)
  • ZendTool-basiert

Eine endgültige Entscheidung, welche der genannten Varianten oder ob gar mehrere unterstützt werden sollen, steht noch aus. Das Thema Packaging steht aber bereits seit Langem auf der Liste der Anforderungen für ZF2, sodass hier hoffentlich mit einer zufriedenstellenden Lösung zu rechnen sein wird.

Module

Bereits mehrfach in dieser Kolumne wurde das Thema der Module im ZF2 erwähnt. Passend dazu und unabhängig von den Anforderungen an das neue MVC wird derzeit ebenfalls auf der Contributors-Mailingliste eine Diskussion geführt, wie die Module in Zukunft aussehen sollen. In ZF1 wurde sowohl der modulare als auch der nichtmodulare Aufbau einer Applikation unterstützt. Ein Verzeichnis application/modules war somit nicht zwingend erforderlich. Stattdessen gab es das default-Modul, bei dem z. B. die Action Controller unter application/controllers zu finden waren. Erstellte man in ZF1 nun ein Modul „Blog“, wurden die Controller unter application/modules/Blog/controllers abgelegt, damit sie vom Standardrouting gefunden werden konnten. Die Tatsache, dass Module auch Grafiken und CSS-Dateien enthalten könnten, wurde in der ZF1-Implementierung vollkommen außer Acht gelassen.

Ein Vorschlag für das ZF2 ist nun, dass diese Flexibilität in Zukunft nicht mehr gegeben sein soll. Als Beispiel könnten die Controller für das Default-Modul dann unter application/Default/Controller und die für das Blog-Modul unter application/Blog/Controller abgelegt werden. Hierbei muss aber beachtet werden, dass default in PHP ein Keyword ist und somit nicht verwendet werden kann.

Ein weiterer Vorschlag beinhaltet, dass alle Dateien eines Moduls unter einem einzigen Verzeichnis zu finden sein sollen. Das betrifft vor allem auch die Grafiken, CSS- und JavaScript-Dateien. Dafür muss natürlich eine Lösung gefunden werden, wie diese dann über das öffentliche public-Verzeichnis einer Anwendung aufgerufen werden können. Ein weiteres Problem betrifft die eingesetzten Framework-Komponenten eines Moduls. Da es in Zukunft möglich sein soll, nur ausgewählte Komponenten zu installieren, muss das bei der Konfiguration eines Moduls ebenfalls berücksichtigt werden. Außerdem sollte berücksichtigt werden, wie das Überschreiben von Teilen eines Moduls durch ein anderes Modul zu handhaben sein soll.

Ralf Eggert

Ralf Eggert ist Geschäftsführer der Travello GmbH mit Sitz in Pinneberg. Er hat bereits mehrere Projekte auf Basis des Zend Frameworks umgesetzt und ist Autor des Buchs „Das Zend Framework“, das livepage.apple.com im April 2009 im Addison-Wesley Verlag erschienen ist. Ralf bloggt auf http://www.blog.zf-info.de über das Zend Framework allgemein sowie auf http://www.zendframeworkbuch.de über sein Zend-Framework-Buch.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -