# Инфраструктура для создания серверных запросов
Пакет HttpSoft\ServerRequest позволяет легко и гибко создавать компоненты PSR-7 ServerRequest и UploadedFile.
Зависит от пакета HttpSoft\Message.
Для этого пакета требуется PHP версии 7.4 или более поздней.
Установка пакета:
composer require httpsoft/http-server-request
# API
- HttpSoft\ServerRequest\PhpInputStream — предпочтительная реализация Psr\Http\Message\StreamInterface для чтения HTTP-потока (
php://input
) или файла. - HttpSoft\ServerRequest\SapiNormalizer — класс, нормализует необходимые данные для создания HttpSoft\Message\ServerRequest из параметров сервера, реализует HttpSoft\ServerRequest\ServerNormalizerInterface.
- HttpSoft\ServerRequest\ServerRequestCreator — хелпер для создания HttpSoft\Message\ServerRequest.
- HttpSoft\ServerRequest\UploadedFileCreator — хелпер для создания HttpSoft\Message\UploadedFile.
# Использование ServerRequestCreator
use HttpSoft\ServerRequest\ServerRequestCreator;
// Все необходимые данные будут получены автоматически:
$request = ServerRequestCreator::createFromGlobals($_SERVER, $_FILES, $_COOKIE, $_GET, $_POST);
// эквивалентно:
$request = ServerRequestCreator::createFromGlobals();
// эквивалентно:
$request = ServerRequestCreator::create();
По умолчанию для нормализации параметров сервера используется HttpSoft\ServerRequest\SapiNormalizer. Вы можете использовать свой собственный нормализатор параметров сервера, для этого вам нужно реализовать интерфейс HttpSoft\ServerRequest\ServerNormalizerInterface.
$normalizer = new YouCustomServerNormalizer();
$request = ServerRequestCreator::create($normalizer);
// эквивалентно:
$request = ServerRequestCreator::createFromGlobals($_SERVER, $_FILES, $_COOKIE, $_GET, $_POST, $normalizer);
// или пользовательскими суперглобальными массивами:
$request = ServerRequestCreator::createFromGlobals($server, $files, $cookie, $get, $post, $normalizer);
# Использование UploadedFileCreator
use HttpSoft\ServerRequest\UploadedFileCreator;
/** @var StreamInterface|string|resource $streamOrFile */
$uploadedFile = UploadedFileCreator::create($streamOrFile, 1024, UPLOAD_ERR_OK, 'file.txt', 'text/plain');
// Создайте новый экземпляр `HttpSoft\UploadedFile\UploadedFile` из массива (элемента `$_FILES`)
$uploadedFile = UploadedFileCreator::createFromArray([
'name' => 'filename.jpg', // optional
'type' => 'image/jpeg', // optional
'tmp_name' => '/tmp/php/php6hst32',
'error' => 0, // UPLOAD_ERR_OK
'size' => 98174,
]);
// Нормализует суперглобальную структуру и преобразует каждое
// значение массива в экземпляр `Psr\Http\Message\UploadedFileInterface`.
$uploadedFiles = UploadedFileCreator::createFromGlobals($_FILES);
Подробное описание использования HttpSoft\ServerRequest\ServerRequestCreator
смотрите здесь.
Подробное описание использования HttpSoft\ServerRequest\UploadedFileCreator
смотрите здесь.