PSR-7 ist eine PHP Standard Recommendation (PSR), die sich auf HTTP-Nachrichten in PHP bezieht. Sie wurde von der PHP-FIG (Framework Interoperability Group) entwickelt und definiert Schnittstellen für das Arbeiten mit HTTP-Nachrichten, wie sie von Webservern und -Clients verwendet werden.
Request und Response:
PSR-7 standardisiert, wie HTTP-Requests und -Responses in PHP dargestellt werden. Es stellt Schnittstellen für:
Unveränderlichkeit (Immutability):
Alle Objekte sind unveränderlich. Das bedeutet, dass Änderungen an einem HTTP-Objekt ein neues Objekt erzeugen, anstatt das bestehende zu modifizieren. Dies verbessert die Vorhersagbarkeit und erleichtert Debugging.
Streams:
PSR-7 verwendet Stream-Objekte, um HTTP-Nachrichtenkörper zu handhaben. Die StreamInterface definiert Methoden für die Arbeit mit Streams (z. B. read(), write(), seek()).
ServerRequest:
Die Schnittstelle ServerRequestInterface erweitert RequestInterface, um zusätzliche Daten wie Cookies, Server-Parameter und hochgeladene Dateien zu behandeln.
Kompatibilität mit Middleware:
PSR-7 ist der Grundstein für Middleware-Architekturen in PHP. Es erleichtert die Entwicklung von Middleware-Komponenten, die HTTP-Anfragen verarbeiten und Antworten manipulieren.
PSR-7 ist in modernen PHP-Frameworks und -Libraries weit verbreitet, darunter:
Das Ziel von PSR-7 ist es, die Interoperabilität zwischen verschiedenen PHP-Bibliotheken und -Frameworks zu verbessern, indem ein gemeinsamer Standard für HTTP-Nachrichten definiert wird.
Guzzle ist eine HTTP-Client-Bibliothek für PHP. Sie ermöglicht es Entwicklern, HTTP-Anfragen in PHP-Anwendungen einfach zu senden und zu empfangen. Guzzle bietet eine Reihe von Funktionen, die das Arbeiten mit HTTP-Anfragen und -Antworten erleichtern:
Einfache HTTP-Anfragen: Guzzle ermöglicht es, GET-, POST-, PUT-, DELETE- und andere HTTP-Anfragen einfach zu senden.
Synchron und asynchron: Anfragen können sowohl synchron als auch asynchron gestellt werden, was eine flexiblere und effizientere Handhabung von HTTP-Anfragen ermöglicht.
Middleware-Unterstützung: Guzzle unterstützt Middleware, die es ermöglicht, Anfragen und Antworten zu modifizieren, bevor sie gesendet oder verarbeitet werden.
Integration mit PSR-7: Guzzle ist vollständig mit PSR-7 (PHP Standard Recommendation 7) konform, was bedeutet, dass es HTTP-Nachrichtenobjekte verwendet, die mit PSR-7 kompatibel sind.
Einfache Fehlerbehandlung: Guzzle bietet Mechanismen zur Behandlung von HTTP-Fehlern und Ausnahmen.
HTTP/2 und HTTP/1.1 Unterstützung: Guzzle unterstützt sowohl HTTP/2 als auch HTTP/1.1.
Ein einfaches Beispiel für die Verwendung von Guzzle zum Senden einer GET-Anfrage könnte so aussehen:
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('GET', 'https://api.example.com/data');
echo $response->getStatusCode(); // 200
echo $response->getBody(); // Antwortinhalt
In diesem Beispiel wird eine GET-Anfrage an https://api.example.com/data gesendet und die Antwort wird verarbeitet.
Guzzle ist eine weit verbreitete und leistungsstarke Bibliothek, die in vielen PHP-Projekten zum Einsatz kommt, insbesondere dort, wo eine robuste und flexible HTTP-Client-Funktionalität erforderlich ist.