Web

Die Zukunft von TYPO3

FLOW3 hebt die PHP-Welt aus den Angeln

07.12.2011
Von Karsten Dambekalns
Mit dem freien Entwicklerframework FLOW3 lassen sich zukunftsgerichtete komplexe PHP-Projekte auf TYPO3-Basis auf die Beine stellen.

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

Das Welcome-Package von FLOW3 zeigt, ob alles richtig installiert wurde.
Das Welcome-Package von FLOW3 zeigt, ob alles richtig installiert wurde.
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

FLOW3 ist auf jedem CLI-Farbschema benutzbar.
FLOW3 ist auf jedem CLI-Farbschema benutzbar.
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.