# Класс HttpSoft\ServerRequest\ServerRequestCreator

Фабрика для создания HttpSoft\Message\ServerRequest.

Исходный код на GitHub.

use HttpSoft\ServerRequest\ServerRequestCreator;

// Экземпляр `HttpSoft\Message\ServerRequest` с пустыми данными:
$request = ServerRequestCreator::createFromGlobals([], [], [], [], []);

// Экземпляр `HttpSoft\Message\ServerRequest` с данными, взятыми из суперглобальных массивов:
$request = ServerRequestCreator::createFromGlobals($_SERVER, $_FILES, $_COOKIE, $_GET, $_POST);
// эквивалентно:
$request = ServerRequestCreator::createFromGlobals(null, null, null, null, null);
// эквивалентно:
$request = ServerRequestCreator::createFromGlobals();
// эквивалентно:
$request = ServerRequestCreator::create();

# Публичные методы

# create

Создает новый экземпляр HttpSoft\Message\ServerRequest из суперглобальных массивов.

public static function create(ServerNormalizerInterface $normalizer = null): ServerRequestInterface;

Смотрите метод createFromGlobals(), так как данный метод является оберткой над ним.

# createFromGlobals

Создает новый экземпляр HttpSoft\Message\ServerRequest из суперглобальных массивов.

public static function createFromGlobals(
    array $server = null,
    array $files = null,
    array $cookie = null,
    array $get = null,
    array $post = null,
    ServerNormalizerInterface $normalizer = null
): ServerRequestInterface;

Если любой из массивов ($server, $files, $cookie, $get, $post) не был указан или равняется null, то будут взяты значения из суперглобальных массивов ($_SERVER, $_FILES, $_COOKIE, $_GET, $_POST), но если был указан массив (даже пустой), то будет использоваться он.

$request = ServerRequestCreator::createFromGlobals([], null, [], null, []);

$request->getServerParams(); // []
$request->getUploadedFiles(); // $_FILES
$request->getCookieParams(); // []
$request->getQueryParams(); // $_GET
$request->getParsedBody(); // []

$normalizer отвечает за нормализацию данных, необходимых для создания HttpSoft\Message\ServerRequest.

$request = ServerRequestCreator::createFromGlobals();

$request->getMethod(); // 'GET'
$request->getProtocolVersion(); // '1.1'
$request->getBody()->getContents(); // 'Контент страницы'
$request->getBody()->getMetadata('uri'); // 'php://input'
(string) $request->getUri(); // 'http://example.com/path'
$request->getHeaders(); // ['Host' => ['example.com'], 'Content-Type' => ['text/html']]

$request->getServerParams(); // $_SERVER
$request->getUploadedFiles(); // $_FILES
$request->getCookieParams(); // $_COOKIE
$request->getQueryParams(); // $_GET
$request->getParsedBody(); // $_POST
$request->getAttributes(); // []

Если $normalizer не был указан или равняется null, то будет использоваться HttpSoft\ServerRequest\SapiNormalizer, который нормализует данные из PHP SAPI. Если HttpSoft\ServerRequest\SapiNormalizer вам не подходит, то создайте собственный, реализовав интерфейс HttpSoft\ServerRequest\ServerNormalizerInterface.