# Infrastructure for creating server requests
The HttpSoft\ServerRequest package makes it easy and flexible to create PSR-7 components ServerRequest and UploadedFile.
Depends on the HttpSoft\Message package.
This package requires PHP version 7.4 or later.
Package installation:
composer require httpsoft/http-server-request
# API
- HttpSoft\ServerRequest\PhpInputStream — preferred implementation Psr\Http\Message\StreamInterface for reading the HTTP stream (
php://input
) or file. - HttpSoft\ServerRequest\SapiNormalizer — class, that normalizing the necessary data for creating a HttpSoft\Message\ServerRequest from server parameters, implements HttpSoft\ServerRequest\ServerNormalizerInterface.
- HttpSoft\ServerRequest\ServerRequestCreator — helper for creating HttpSoft\Message\ServerRequest.
- HttpSoft\ServerRequest\UploadedFileCreator — helper for creating HttpSoft\Message\UploadedFile.
# Usage ServerRequestCreator
use HttpSoft\ServerRequest\ServerRequestCreator;
// All necessary data will be received automatically:
$request = ServerRequestCreator::createFromGlobals($_SERVER, $_FILES, $_COOKIE, $_GET, $_POST);
// equivalently to:
$request = ServerRequestCreator::createFromGlobals();
// equivalently to:
$request = ServerRequestCreator::create();
By default HttpSoft\ServerRequest\SapiNormalizer is used for normalization of server parameters. You can use your own server parameters normalizer, for this you need to implement an HttpSoft\ServerRequest\ServerNormalizerInterface interface.
$normalizer = new YouCustomServerNormalizer();
$request = ServerRequestCreator::create($normalizer);
// equivalently to:
$request = ServerRequestCreator::createFromGlobals($_SERVER, $_FILES, $_COOKIE, $_GET, $_POST, $normalizer);
// or with custom superglobals:
$request = ServerRequestCreator::createFromGlobals($server, $files, $cookie, $get, $post, $normalizer);
# Usage UploadedFileCreator
use HttpSoft\ServerRequest\UploadedFileCreator;
/** @var StreamInterface|string|resource $streamOrFile */
$uploadedFile = UploadedFileCreator::create($streamOrFile, 1024, UPLOAD_ERR_OK, 'file.txt', 'text/plain');
// Create a new `HttpSoft\UploadedFile\UploadedFile` instance from array (the item `$_FILES`)
$uploadedFile = UploadedFileCreator::createFromArray([
'name' => 'filename.jpg', // optional
'type' => 'image/jpeg', // optional
'tmp_name' => '/tmp/php/php6hst32',
'error' => 0, // UPLOAD_ERR_OK
'size' => 98174,
]);
// Normalizes the superglobal structure and converts each array
// value to an instance of `Psr\Http\Message\UploadedFileInterface`.
$uploadedFiles = UploadedFileCreator::createFromGlobals($_FILES);
Detailed description of using HttpSoft\ServerRequest\ServerRequestCreator
see here.
Detailed description of using HttpSoft\ServerRequest\UploadedFileCreator
see here.