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.