Implementation of PSR-7 standard for representing HTTP messages as described in RFC 7230 and RFC 7231, and URIs for use with HTTP messages as described in RFC 3986.
- PHP
>=8.5 - Composer
Install the package with Composer:
composer require thingston/psr7<?php
use Thingston\Psr7\Request;
$request = new Request(
method: 'POST',
uri: 'https://api.example.com/users?active=1',
headers: [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
);
$request = $request->withBody(new \Thingston\Psr7\Stream('{"name":"Ada"}'));
echo $request->getMethod(); // POST
echo $request->getRequestTarget(); // /users?active=1
echo $request->getHeaderLine('Host'); // api.example.com<?php
use Thingston\Psr7\Response;
use Thingston\Psr7\Stream;
$response = new Response(
statusCode: 201,
headers: ['Content-Type' => 'application/json'],
body: new Stream('{"created":true}')
);
echo $response->getStatusCode(); // 201
echo $response->getReasonPhrase(); // Created<?php
use Thingston\Psr7\Uri;
$uri = (new Uri('https://example.com/base/path'))
->withQuery('page=2')
->withFragment('details');
echo (string) $uri; // https://example.com/base/path?page=2#details<?php
use Thingston\Psr7\ServerRequest;
$request = ServerRequest::fromGlobals();
echo $request->getMethod();
echo (string) $request->getUri();
print_r($request->getQueryParams());
print_r($request->getUploadedFiles());<?php
use Thingston\Psr7\UploadedFile;
$file = new UploadedFile('/tmp/report.csv', 1234, UPLOAD_ERR_OK, 'report.csv', 'text/csv');
$file->moveTo(__DIR__ . '/storage/report.csv');PSR-7 objects in this package are immutable. Methods such as withHeader(), withStatus(), withUri(), and withParsedBody() return a new instance instead of modifying the original object.