Skip to content

thingston/psr7

Repository files navigation

Thingston PSR7

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.

Requirements

  • PHP >=8.5
  • Composer

Installation

Install the package with Composer:

composer require thingston/psr7

Usage

Create a request

<?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

Create a response

<?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

Work with URIs

<?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

Build a server request from PHP globals

<?php

use Thingston\Psr7\ServerRequest;

$request = ServerRequest::fromGlobals();

echo $request->getMethod();
echo (string) $request->getUri();
print_r($request->getQueryParams());
print_r($request->getUploadedFiles());

Uploaded files

<?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');

Notes

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.

About

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.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages