Noch eine Sache, die wir an TYPO3 v10 lieben: Der PSR-14 Event-Dispatcher

|Daniel Goerz

Bisher konnten TYPO3-Entwicklerinnen Hooks und Signals nutzen um Fremdcode bzw den Core zu erweitern und sich an bestimmten Stellen einzuklinken. In TYPO3 10 wurde nun der PSR-14-Standard implementiert, ein vereinheitlichter Ansatz um Events abzusetzen, auf den sich die Mitglieder des PHP-FIG-Projects geeinigt haben. In diesem Artikel schauen wir uns an wie diese neue Art des Event-Handling funktioniert und was das für künftige TYPO3-Update bedeutet. Es ist eine der 13 Dinge, die wir an TYPO3 v10 lieben.

Mit Events lässt sich Code verlässlich abfangen

Genau wie TYPO3s hauseigene Hooks und Extbases Signals und Slots erlaubt es der PSR-14 Event-Dispatcher Code an bestimmten Stellen abzufangen. Immer wenn irgendwo im Code ein Event gefeuert wird, können sich beliebig viele Listener registrieren, die auf genau dieses Event lauschen und sobald es eintritt, den Verlauf des Codes ändern, ihn ergänzen oder einfach nur beobachten (beispielsweise um etwas zu loggen) können. Dies ist eine verlässliche und saubere Art bestehenden Code zu erweitern ohne z.B. den Core “hacken” zu müssen (Stichwort XClass), was beim nächsten Update zwangsläufig zu Problemen führen würde. Durch den standardisierten Ansatz wird es außerdem einfacher möglich auf Events von anderen Libraries zu reagieren, sofern diese PSR-14 unterstützen.

Über das Thema PSR-14 Events in TYPO3 habe ich auch einen ausführlichen, englischsprachigen Blogpost auf meinem Blog usetypo3.com geschrieben, der zeigt, wie man eigene Events feuert und sich für bestehende Events registriert.

PSR-14 standardisiert Event-Dispatching über PHP-Projekte hinweg

Die PHP Framework Interop Group (PHP-FIG) veröffentlicht Empfehlungen für Herangehensweisen an verbreitete Probleme und Anforderungen, die in PHP-Projekten immer wieder anfallen. Viele Wege führen nach Rom, aber wenn wir uns auf eine Straße einigen, dann können wir uns ein Auto teilen und gleichzeitig noch Sprit sparen..

PSR-14 adressiert die vielen verschiedenen Konzepte zur erweiterbarkeit von Code (Beispiele dafür sind TYPO3 Hooks und Signal/Slots) und versucht einen für alle gangbaren Standard zu definieren. Benni hat beim Ausarbeiten der Empfehlung mitgewirkt und konnte so sicherstellen, dass PSR-14 auch den Anforderungen von TYPO3 genügt.

Zum Thema: Ein Interview mit Benni Mack Improving Developer Adoption in TYPO3 auf typo3.com

Die Vorteile von PSR-14 Events für Entwicklerinnen und Agenturen

TYPO3 ist eines der ersten großen PHP-Projekte, das PSR-14 implementiert hat. Benni hat dies bereits in einem Talk auf den Developer Days 2019 vorgestellt. Von der Umstellung auf PSR-14 werden sicherlich viele Entwicklerinnen profitieren, weshalb wir uns über diese Verbesserung so freuen.

Eingesessene TYPO3-Entwicklerinnen können auch weiterhin auf die bewährten Hooks zurückgreifen, Extbases Signals and Slots sind allerdings bereits deprecated und werden in TYPO3 11 nicht mehr funktionieren. Für neue Entwicklerinnen, die aber bereits Erfahrung in anderen PHP-Frameworks haben wird TYPO3 mit dieser Entwicklung wieder ein Stück leichter zu erlernen sein.

  • Für Entwicklerinnen werden die Einstiegshürden gesenkt, wenn sie bereits mit den standardisierten Events aus anderen Frameworks und Anwendungen vertraut sind. Es wird außerdem leichter, den Code anderer Leute (als Vorbild) zu verwenden, wenn diese ebenfalls denselben Standards folgen. Teile des TYPO3 Codes werden leichter zu warten, da hauseigene Lösungen durch standardisierte Lösungen ersetzt werden. Dies gilt nicht zuletzt für Dokumentation. Ein weiterer Vorteil für Entwicklerinnen ist, dass es PSR-14 Events erlauben, eine spezifische API für ein Event zu definieren, da jedes Event von einem eigenen Objekt repräsentiert wird. Die Event-Objekte können also über die öffentlichen Methoden bestimmen, welche Daten sie zur Verfügung stellen und an welchen Stellen sie sogar veränderte Daten annehmen. Das ist natürlich eine große Verbesserung gegenüber den Hooks, deren einzige Möglichkeit Datenmanipulation zu ermöglichen darin bestand, Referenzen zu übergeben.
  • Der Vorteil für Agenturen besteht darin, dass ihre Entwicklerinnen effizienter Arbeiten und neue Mitarbeiter eventuell leichter rekrutiert und eingearbeitet werden können.

Entwicklerinnen werden produktiver, was Agenturen profitabler macht. Sieht schwer nach win-win-win aus.

Zukünftige Arbeit sparen und schon heute auf TYPO3 10 updaten

Die guten alten hook sind in TYPO3 v10 noch alle da und werden supportet, wir haben allerdings bereits begonnen so viele wie möglich auf PSR-14 Events zu migrieren. Mit TYPO3 11 könnten bereits viele deprecated sein, daher macht es Sinn sich so früh wie möglich mit den neuen Events vertraut zu machen. Es ist immer gut die Arbeit nicht auf die Zukunft zu verschieben. In den offiziellen Docs gibt es bereits eine Liste mit allen PSR-14 Events, die es bisher im TYPO3 core gibt, es werden aber sicherlich noch einige dazukommen. Übrigens auch eine gute Gelegenheit zum TYPO3 core zu contributen.

Die Einführung von PSR-14 macht ein frühes Upgrade auf TYPO3 10 noch sinnvoller, da ein grundlegendes Software-Konzept fundamental verbessert wird. Neuen Code schon heute mit Events schreiben und für die Zukunft gerüstet sein. Komplexität für Entwicklerinnen reduzieren und gleichzeitig effizienter Arbeiten - Musik in Agentur-Ohren.

Du fragst Dich, was ein TYPO3-Upgrade wohl kostet?

Vermutlich ist das Upgraden Deiner Seite nicht so teuer wie Du denkst!

Kontaktiere uns für ein Angebot