PSR-15 Middlewares in TYPO3

Dieses Tutorial wird dir einen Einblick in die Welt der PSR-15 Middlewares in TYPO3 geben und ich zeige dir, wie du sie in TYPO3 implementieren kannst.

Was ist die PSR-15 Middleware?

PSR-15 Middleware ist ein Konzept, das es ermöglicht, HTTP-Anfragen und -Antworten in einer Anwendung zu manipulieren und zu verarbeiten.

Es ist eine Schnittstelle, die eine Verkettung von Middleware-Instanzen ermöglicht, um eine Anfrage zu verarbeiten. Jede Middleware-Instanz kann die Anfrage verändern oder die Antwort manipulieren, bevor sie an die nächste Middleware-Instanz weitergegeben wird.

Das TYPO3 CMS bietet bereits systemeigene Middleware Handler um beispielsweise die aktuelle Seiten- und Spracheinstellungen dem Request hinzuzufügen. Dadurch können auf solche Informationen systemweit zugegriffen werden.

Wie kannst du eigene Middlewares in TYPO3 implementieren?

Um PSR-15 Middlewares in TYPO3 zu implementieren, musst du lediglich eine PHP Klasse erstellen und diese in einer PHP Datei mit wenigen Zeilen registrieren.

Grundvorraussetzung ist es eine TYPO3 Extension zu haben oder eine neue zu erstellen. Wie das geht, lernst du zum Beispiel bei dem TYPO3 Entwickler Crashkurs auf dem T3 Campus.

In einer Extension erstellt du dann eine PHP Klasse irgendwo unterhalb des Classes - Ordners. Ich empfehle dir das unterhalb von Classes/Middleware zu tun.

Diese Klasse muss dann das Interface Psr\Http\Server\MiddlewareInterface implementieren. Dieses Interface besagt, dass man folgende Methode erstellen soll:

public function process(
  ServerRequestInterface $request,
  RequestHandlerInterface $handler
): ResponseInterface {

}

Die Methode enthält 2 Eingangsparameter, mit denen man Zugriff auf das TYPO3 Request und den vorherigen Request Handler bekommt.

Als Rückgabewert erwartet diese Methode ein Response - Objekt, welches man ganze einfach über diesen Aufruf erhält:

$handler->handle($request);

Alles dazwischen ist dir überlassen. Du kannst deine Kreativität freien lauf lassen.

TYPO3 Request Objekt verändern

Um neue Informationen dem TYPO3 Request Objekt zuzuweisen, kannst du folgenden Aufruf machen:

$request = $request->withAttribute('newMiddlewareData', __CLASS__);

Dadurch fügst du dem TYPO3 Request ein neues Attribut: newMiddlewareData hinzu.

Diese Information kannst du dann in anderen Extensions wie folgt auslesen:

$this->request->getAttribute('newMiddlewareData');

oder

$GLOBALS['TYPO3_REQUEST']->getAttribute('newMiddlewareData');

TYPO3 Response Objekt verändern

Du kannst mit diesem oder anderen Middleware Handler auch die TYPO3 Response auslesen, verarbeiten oder auch verändern.

Dadurch musst du den nächsten Handler ausführen und dessen Response Objekt nehmen. Das geht wie folgt:

$response = $handler->handle($request);

Dann kannst du beispielsweise ein neuen HTTP Header hinzufügen:

$response = $response->withHeader('NewMiddlewareHeader', __CLASS__);

Welche Anwendungsbeispiele gibt es für PSR-15 Middlewares?

Ein PSR-15 Middleware dient dazu, um Informationen möglichst früh zu verarbeiten. Die Middleware ist einer der ersten Komponenten, die in TYPO3 bei einem URL-Aufruf abgearbeitet werden.

Die möglichen Einsatzgebiete sind vielfältig. 

Du hast bereits oben gesehen, dass du dem TYPO3 Request Objekt eigene Informationen mitgeben kannst. Du kannst auf dieser Weise auch Werte von vorherigen Request Handler ändern.

TYPO3 selbst nutzt Middleware, um diverse Informationen im TYPO3 Request abzulegen. Das sind zum Beispiel:

  • Informationen über die Einstellungen aus der Seitenverwaltung für die aktuelle Domain
  • Informationen über die aktuelle Sprache
  • Informationen über den aktuellen Frontendbenutzer
  • TypoScript Informationen usw.

Du selbst könntest ein Middleware Handler nutzen um:

  • eine WAF zu implementieren
  • Wartungsseite einzublenden
  • HTTP Header dynamisch zu setzen
    • wie Cache Einstellungen auf Basis bestimmter Bedingungen.

Fazit: Warum ist die Implementierung der PSR-15 Middleware ein großer Gewinn für Entwickler und Benutzer von TYPO3?

Wenn es um die Entwicklung von Webanwendungen geht, ist die Implementierung von PSR-15 Middlewares ein großer Gewinn für Entwickler und Benutzer von TYPO3.

Mit der Verwendung von Middlewares können Entwickler ihre Anwendungen flexibler und effizienter gestalten. Sie können zum Beispiel verschiedene Anfragen filtern, um sicherzustellen, dass nur legitime Anfragen an die Anwendung weitergeleitet werden.

Auch die Benutzer profitieren von der Implementierung von PSR-15 Middlewares, da sie eine schnellere und reibungslose Interaktion mit der Anwendung ermöglichen. Darüber hinaus ermöglicht die Verwendung von Middlewares in TYPO3 eine bessere Skalierbarkeit und Wartbarkeit der Anwendung.

Insgesamt ist die Implementierung von PSR-15 Middlewares ein großer Schritt nach vorne für TYPO3-Entwickler und Benutzer und wird dazu beitragen, dass die Plattform weiterhin eine der führenden Webanwendungen bleibt.

Auf meinem YouTube Kanal kannst du ein Videotutorial zu PSR-15 Middlewares.

Bereit mehr zu lernen?

Dann komme in meine TYPO3 Onlineschule

Als Mitglied des T3 Campus für TYPO3 Schulungen erhältst du eine einzigartige Lernplattform, um professionelle Webseiten mit TYPO3 zu erstellen. Egal, ob du ein Einsteiger, Umsteiger oder bereits erfahren bist – hier findest du die passenden Lernvideos für dich.

Kevin Chileong Lee

Gründer vom T3 Campus, TYPO3 Experte mit 10+ Jahren Erfahrung, TYPO3 Liebhaber.

Ich helfe dir dabei, deine Projekte in TYPO3 umzusetzen.

Insbesondere für TYPO3 Einsteiger biete ich zahlreiche kostenfreie Tutorials und kostenpflichtige Kurse rund um TYPO3 an.
Damit kannst du in wenigen Tagen auch ohne Vorkenntnisse deine erste TYPO3 Webseite erstellen und Erweiterungen programmieren.

Auf meinem YouTube-Kanal findest du viele praktische Beispiele und Videotutorials als auch allgemein Videos zu diversen TYPO3 Themen.

Neber den TYPO3 Tutorials und Kopiervorlagen, schreibe ich auch Artikel auf meinem Blog über diverse Themen und Fragen, die die meisten TYPO3 Einsteiger, haben.

Wenn du auf dem Laufenden sein möchtest über meine Projekte, dann abonniere den Newsletter.