Mehr Freiraum für Webentwickler: Mit dem Zend Framework in die Zukunft
Zend Framework [1] unterscheidet sich von den meisten anderen Frameworks dadurch, dass es im Grunde ein Komponenten-Framework ist und die schnelle Erstellung von Model-View-Controller-Anwendungen (MVC) unterstützt, ohne einen bestimmten Programmierstil vorauszusetzen. Dazu nutzt es Werkzeuge und Funktionalitäten, die in PHP 5.1 integriert sind. Derzeit setzt Zend Framework PHP in Version 5.1.4 oder höher voraus. Mit der robusten MVC-Architektur können Entwickler unkompliziert arbeiten und schnell ihre eigenen Programmsteuerungen, Präsentationen und Modelle erstellen. MVC trennt dabei die Business-Logik vom User-Interface-Design und bietet so eine ideale Basis für die Entwicklung von anspruchsvollen Webapplikationen.
Datenzugriff per Abstraktion
Der Database Abstraction Layer von Zend Framework unterstützt eine ganze Reihe von Aufgaben, beispielsweise die Suche nach einer Komponente, die automatisch die Applikation beim Gebrauch mehrerer Datenbanken schützt oder die vereinfachte Entwicklung eines eigenen SQL-Codes. Mit den eingebauten Werkzeugen für die Generierung von SQL-Code lassen sich Anwendungen entwickeln, die mit relationalen Datenbanken von MySQL bis DB2 zusammenarbeiten. Die unübersichtlichen Details von SQLverbirgt das Zend Framework hinter einer einfach gehaltenen Schnittstelle. So können sich Entwickler voll darauf konzentrieren, ihre Applikation fertigzustellen. Wer allerdings seine eigenen SQL-Befehle von Hand schreiben möchte, kann auch das mit dem Zend Framework tun. Voraussetzung dafür ist, dass die Zieldatenbank, mit der kommuniziert werden soll, von vornherein bekannt ist. Das Framework erledigt dann den eigentlichen Datenaustausch und die Formatierung. Bei all den Möglichkeiten besteht jedoch keine grundsätzliche Abhängigkeit zu „Zend_Db“. Entwickler, die bereits andere Datenbank-Abstraktionsklassen wie MDB2 oder ADODB nutzen, können diese alternativ zu „Zend_Db“ in Zend-Framework-Projekte einbinden.
Ressourcen schonen mit Zend_Cache
Besonders nützlich für den schnellen Betrieb einer PHP-Anwendung ist
der Cache von Zend Framework. Genau wie herkömmliche Caching-Mechanismen übernimmt
„Zend_Cache“ viele Speicheraufgaben. So sind nur wenige Codezeilen
notwendig, um einfache Aufgaben wie das Zwischenspeichern
von SQL-Ergebnissen zu aktivieren. Aber auch komplexe Aufgaben wie
das bedingte Speichern einzelner Teile einer PHP-Anwendung können mit
Zend_Cache bewerkstelligt werden. Mit unterschiedlichen „TTLs“ (Time to
Live) in jedem Cache können auch komplizierte Caching-Schemata
implementiert und verwaltet werden. Zend_Cache kann auch mit
Benutzer-Frontend- und Benutzer-Backend-Optionen konfiguriert werden:
Frontend-Optionen zum Cachen von HTML-Seiten, von Ergebnissen eines
Funktionsaufrufs oder von PHP-Klassen sind in Zend_Cache bereits enthalten. Im Backend bietet Zend_Cache zusätzlich zum herkömmlichen
dateibasierten Caching vorkonfigurierte Optionen für SQLLite, APC und
Zend Platform.
Aufbau einer Service-Architektur
Bereits beim Entwicklungsbeginn von Zend Framework wurde eine
Service-Architektur berücksichtigt. Dementsprechend hat Zend_Service
objektorientierte Schnittstellen für bestehende Web Services und eine
Architektur, mit der andere Services unkompliziert entwickelt werden
können. Viele der Services bauen auf „Zend_Rest_Client“ auf, der die
komplette Interaktion bewältigt. Entwickler sollen sich dadurch voll auf den Aufbau der Schnittstelle konzentrieren können. Sollte ein Service
nicht vorkonfiguriert sein, bindet Zend Framework Klassen wie
„Zend_Rest_Client“ ein.
Benutzer und Sessions
Im Gegensatz zu vielen anderen Frameworks, die Entwicklern ein Basis-Interface zum Verwalten von Session-Werten bereitstellen, bietet Zend Framework Kontrollmöglichkeiten über seine datenbankunabhängige, objektorientierte Schnittstelle. Viele Komponenten in Zend Framework machen umfassenden Gebrauch von „Zend_Session“-Komponenten. Ein Beispiel dafür ist „Zend_Auth“: Wird diese Komponente in ihrer ursprünglichen Konfiguration angewendet, erstellt sie automatisch ein Session-Interface, um die Authentifizierungsinformationen zu speichern. Die objektorientierte Schnittstelle erlaubt den Zugriff auf Funktionen, die normalerweise nicht für PHP-Sessions verfügbar sind. So verbindet Zend_Session unterschiedliche Konzepte wie Namensräume und Leserechte, damit andere Bereiche der Anwendung Informationen nicht verändern. Die Konzepte gibt es zusätzlich zu den Standard-PHP-Optionen auch zum Aufstocken der Speicher-Engine.
Die Dokumentation
Eine Stärke von Zend Framework ist die Dokumentation. Sie wird mit jeder Zwischenversion aktualisiert und gilt als offizielle Dokumentation. Innerhalb des Zend-Framework-Wikis findet sich im Entwicklerbereich eine noch aktuellere Version der Dokumentation [2]. Sie wird alle 30 Minuten automatisch aus den aktuell bearbeiteten Dokumenten der beteiligten Entwickler erstellt. Wer die neusten Änderungen von Zend Framework sucht, kann sich somit auf die stets aktuelle Dokumentation im Wiki beziehen. Schließlich gibt es auch eine Dokumentation für die Klassen, die noch nicht in den Kern eingeflossen sind. Die Klassen befinden sich im Inkubator – einem Teststadium – und haben eine eigene Dokumentation, die mit ihnen wächst. Die Dokumentation wird automatisch in den Kern übernommen, sobald die Klasse dort integriert wurde.
Beteiligung der Community
230 aktiv Mitwirkende haben ihre Erfahrungen mit Zend Framework in die weitere Entwicklung eingebracht – darunter befinden sich sowohl freie als auch von großen Unternehmen wie Google, IBM und Zend Technologies beauftragte Entwickler. Alle Mitwirkenden am Framework haben ihren Code unter einem Contributor License Agreement (CLA) [3] nach Vorbild des Apache-Projekts eingereicht. Unternehmen, deren Anwendungen auf Zend Framework basieren, sind somit auch für den kommerziellen Einsatz der Anwendung bestens gerüstet. Zusätzlich gibt es eine breite, aktive Community. Jeder größere Bereich von Zend Framework hat seine eigene Mailingliste. Dadurch soll verhindert werden, dass die Hauptliste „fw-general“ mit Details jedes einzelnen Projekts überladen wird. Obwohl der eigene Firmenname im Projektnamen auftaucht, unterstützt Zend aktiv die Teilnahme und Führerschaft von allen Community-Mitgliedern. Das Ergebnis ist ein Framework, das nicht von Einzelnen gesteuert wird und Komponenten besitzt, die von Experten aus der Community erstellt wurden, um aktuelle Probleme der Webentwicklung zu lösen.
Klar ist, dass heutzutage kein modernes PHP-Framework ohne eine dynamische und facettenreiche Community überleben kann. Meinungsverschiedenheiten fördern hier in der Regel die konstruktive Diskussion, die bei der Verbesserung von Zend Framework hilfreich war und ist.