Fünf Jahre lang wurde es entwickelt, fünf Jahre lang hat die Open-Source-Gemeinde gewartet. Seit Ende Oktober ist es da: FLOW3, das neue freie Entwicklerframework für PHP-Software auf Basis des Content-Management-Systems TYPO3. FLOW3 verbindet Vorgehensweisen aus anderen Frameworks, wie beispielsweise Zend oder Rails, mit Ideen aus der Java-Welt und dem Spring-Framework. Im Baukastenprinzip vereint FLOW drei Programmierparadigmen, die es bislang in PHP nicht gab: Domain-Driven Design, Dependency Injection und aspektorientierte Programmierung.
Gestiegene Anforderungen
Foto: TYPO3 Assocation
TYPO3, das Content-Management-System (CMS) auf Open-Source-Basis, ist seit dem Jahr 2000 auf dem Markt und wird seitdem kontinuierlich weiterentwickelt. Offiziell existieren inzwischen über 500.000 Websites und Tausende Intranets auf Basis von TYPO3. TYPO3 wurde einst als klassisches CMS für die Erstellung und Pflege von Websites entwickelt. Im Laufe der Zeit und mit dem wachsenden Erfolg sind die Anforderungen an die Software stetig gestiegen: Heute ist es möglich, Drittsysteme wie etwa SAP anzubinden oder das CMS als Shop-Software zu nutzen. Der Funktionsumfang von TYPO3 ist kontinuierlich gewachsen, und viele Unternehmen haben sogar eigene firmenspezifische Extensions entwickelt. Ein führender Sportartikel-Hersteller verwendet TYPO3 beispielsweise als webbasierte Applikation für seine komplette Marketingsteuerung - eine Aufgabe, für die das CMS ursprünglich nicht gedacht war. In solchen unvorhergesehenen Nutzungen liegt auch die Notwendigkeit des neuen Frameworks FLOW3 begründet: Nur auf Basis innovativer Technologien kann TYPO3 den gestiegenen technischen Ansprüchen - besonders in den Bereichen Sicherheit und Nutzerverwaltung - langfristig gerecht werden.
Unabhängig von TYPO3
Das Entwicklerteam von FLOW3 hat das alte TYPO3-Framework nicht verbessert, sondern eine komplett neue Entwicklungsumgebung aus der Taufe gehoben. Während andere PHP-Frameworks einen eher komponentenorientierten Ansatz verfolgen, handelt es sich bei FLOW3 um eine integrative Enterprise Web-Application-Plattform. Vorher gab es in der PHP-Welt kein derartiges CMS mit einem eigens entwickelten Framework. Die Besonderheit von FLOW3 besteht darin, dass der Code einerseits sämtliche TYPO3-spezifischen Funktionen beinhaltet, andererseits aber auch völlig unabhängig von TYPO3 benutzt werden kann. So ist es möglich, vom CMS unabhängige Applikationen zu entwickeln, die sich bei Bedarf zu einem späteren Zeitpunkt dennoch sehr einfach in das CMS einbinden lassen.
Aspektorientierte Programmierung
Foto: TYPO3 Assocation
Auf technischer Seite gibt es einige neue Konzepte, die FLOW3 innerhalb der PHP-Welt eine Sonderstellung verleihen: Aspect-Oriented Programming, Domain-Driven Design und Dependency Injection. FLOW3 ist das einzige PHP-Framework, das die aspektorientierte Programmierung (AOP) unterstützt. Im Mittelpunkt steht dabei die Trennung der "Cross Cutting Concerns" einer Anwendung von der eigentlichen Geschäftslogik. Cross Cutting Concerns sind bestimmte Bereiche der Software, die für die Anwendung wichtig sind, aber nicht im eigentlichen Sinn zur Geschäftslogik gehören. Typische Beispiele hierfür sind Logging, Debugging, Security und Protokollierung. Mit AOP ist es nun möglich, den Code für diese Funktionen zentral zu definieren und deklarativ - ohne Änderungen an der Geschäftslogik - in die Applikation einzubinden. Auf diese Weise lässt sich etwa während der Ausführung einer Funktion überprüfen, ob der Benutzer überhaupt berechtigt ist, die Aktion auszuführen beziehungsweise auf entsprechende Daten zuzugreifen.
Domain-Driven Design
Ein weiteres Programmierparadigma, das in der PHP-Welt bislang technisch nicht umsetzbar war, ist das Domain-Driven Design. Darunter versteht man eine spezielle Herangehensweise an das Design objektorientierter Software, um die Produktivität komplexer Softwareprojekte in der agilen Softwareentwicklung zu steigern. Voraussetzung ist die Gliederung der Software in eine Schichtenarchitektur. So können sich Entwickler ganz auf die Umsetzung der jeweiligen Geschäftslogik konzentrieren, da Nebenschauplätze wie Persistenz oder Sicherheit in der Modellierung ausgeblendet werden. Programmierer entwickeln ausschließlich PHP-Objekte mit entsprechender Dokumentation. FLOW3 bietet erstmals die für diesen Ansatz notwendige Unterstützung, indem es die Infrastruktur-Aspekte eines Projekts nahezu transparent zur Verfügung stellt.
Dependency Injection
Foto: TYPO3 Assocation
Neu ist auch der Ansatz der Dependency Injection. Dadurch lassen sich Abhängigkeiten zwischen Komponenten in einem objektorientierten System minimieren. Anders als in klassisch aufgebauten, objektorientierten Systemen überträgt Dependency Injection die Verantwortung für die Erzeugung und Verknüpfung von Objekten an ein externes Framework. Das macht den Code des Objekts unabhängig von seiner Umgebung und der konkreten Umsetzung der Klassen. Während in herkömmlichen Anwendungen alle Abhängigkeiten innerhalb der Objekte selbst festgelegt sind, sorgt Dependency Injection für die Reduktion starrer Abhängigkeiten. Es ist möglich, FLOW3-Komponenten je nach Laufzeitumgebung und Konfiguration auszutauschen und optimal an die individuelle Situation der Anwendung anzupassen. Entwickler werden durch Dependency Injection in die komfortable Lage versetzt, Code nur einmal zu programmieren, um diesen dann an beliebig vielen Stellen und für beliebig viele Extensions verwenden zu können. Im Gegensatz zu anderen Dependency Injection-Lösungen für PHP benötigt FLOW3 in den meisten Fällen keine externe Konfiguration und bedeutet damit einen echten Produktivitätsgewinn.
Neue Lizenz
Nicht nur aus technischer Perspektive bringt FLOW3 viele Neuerungen mit sich. Auch die Lizenz wurde angepasst. Das Projekt ist nun unter der LGPL, auch Lesser GPL genannt, lizenziert. Aufgrund der neuen Lizenz lässt sich FLOW3 in freien und kommerziellen Projekten ohne Einschränkung und unter Wahrung der Urheberrechte einsetzen. Es ist nicht mehr länger nötig, den Quellcode von FLOW3-basierten Softwarelösungen offenzulegen. Davon profitieren insbesondere Unternehmen, die mithilfe von FLOW3 eine eigene Software entwickeln möchten: Sie erreichen mehr Investitionssicherheit und einen besseren Schutz ihres geistigen Eigentums.
Für den gehobenen Anspruch
Foto: TYPO3 Assocation
FLOW3 ist ein in der PHP-Welt einzigartiges Framework. Es überzeugt durch seinen Fokus auf eine saubere Umsetzung, durch einfache Administrierbarkeit und durch den Einsatz modernster Technologien. Das Entwicklerteam erhebt keinen geringeren Anspruch, als mit FLOW3 das umfassendste Enterprise-Ready-PHP-Framework überhaupt entwickelt zu haben. Denn FLOW3 erfüllt von Hause aus viele Anforderungen, die für Enterprise-Projekte wesentlich sind: In Content Delivery Networks ermöglicht die Resource-Abstraktion von FLOW3 etwa automatisch den Zugriff auf benötigte Grafiken und Dateien und speichert diese an der richtigen Stelle. Auch das Caching Framework ist so flexibel ausgelegt, dass in Cloud-Umgebungen je nach Bedarf auch zentrale Cache-Server genutzt werden können. Ebenso ist das Session-Handling auf den Betrieb hinter Load Balancern (Serverlastverteilern) vorbereitet. Demnächst wird es auch ein FLOW3 Package Repository geben: Wie in einem Onlineshop können Entwickler dort Extensions kostenlos herunter- und hochladen. Damit steht schon heute fest: FLOW3 wird in Zukunft das System der Wahl für anspruchsvolle PHP-Projekte werden - ob mit oder ohne TYPO3. (sh)