FLOW3 Version 1.0 ist da, jetzt hat das Warten ein Ende. Am 20. Oktober 2011 hat das TYPO3-Projekt FLOW3 Version 1.0 veröffentlicht. FLOW3 ist das neue zukunftsfähige Framework als Basis des Content Management Systems TYPO3 5.0. Das PHP-Framework FLOW3 basiert auf modernsten Programmiertechniken und verbindet Vorgehensweisen aus anderen Frameworks, wie beispielsweise Zend oder Rails, mit Ideen aus der Java-Welt und dem Spring-Framework.
Im Baukastenprinzip vereint FLOW3 drei Programmierparadigmen, die es bislang in PHP nicht gab:
[ulist][uli] Domain-Driven Design, [/uli]
[uli] Dependency Injection und [/uli]
[uli] Aspect-Oriented Programming[/uli]
[/ulist]
.
Das Welcome-Package zeigt, ob alles richtig installiert wurde
TYPO3, ein Open Source Content Management System, ist schon seit 2000 auf dem Markt und wird seitdem kontinuierlich weiterentwickelt. Offiziell existieren inzwischen über 500.000 Websites und tausende Intranets auf Basis von TYPO3. Es 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 sogar als webbasierte Applikation für seine komplette Marketingsteuerung – eine Aufgabe, für die das CMS ursprünglich nicht gedacht war. Darin 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.
Das Entwicklerteam von FLOW3 hat das alte TYPO3-Framework nicht verbessert, sondern ein komplett neues Framework entwickelt. Aus diesem Grund unterscheidet sich FLOW3 deutlich von anderen PHP-Frameworks: Während diese einen eher komponentenorientierten Ansatz verfolgen, handelt es sich bei FLOW3 um eine integrative Enterprise Web Application-Plattform. Bislang gab es in der PHP-Welt kein Content Management System mit einem eigens entwickelten Framework. Das ändert sich jetzt. 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.
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.
FLOW3 bietet eine umfassende Hilfe für die Kommandozeile an
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.
FLOW3 ist auf jedem CLI-Farbschema benutzbar
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.
Nicht nur aus technischer Perspektive bringt FLOW3 viele Neuerungen mit sich. Auch die Lizenz von FLOW3 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 Source Code 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 ihrer Intellectual Property.
Eigene Tools für die Kommandozeile können einfach entwickelt werden
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 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.
© 2012 FEiG & PARTNER