# Класс HttpSoft\Request\ServerRequestFactory

Фабрика для создания HttpSoft\Request\ServerRequest, реализует Psr\Http\Message\ServerRequestFactoryInterface.

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

use HttpSoft\Request\ServerRequestFactory;

// Экземпляр `HttpSoft\Request\ServerRequest` с пустыми данными:
$factory = new ServerRequestFactory();
$request = $factory->createServerRequest('GET', '');
// Или
$request = ServerRequestFactory::createFromGlobals([], [], [], [], []);

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

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

Оригинальное подробное описание методов смотрите в Psr\Http\Message\ServerRequestFactoryInterface.

# create

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

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

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

# createFromGlobals

Создает новый экземпляр HttpSoft\Request\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 = ServerRequestFactory::createFromGlobals([], null, [], null, []);

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

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

$request = ServerRequestFactory::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\Request\SapiNormalizer, который нормализует данные из PHP SAPI. Если HttpSoft\Request\SapiNormalizer вам не подходит, то создайте собственный, реализовав интерфейс HttpSoft\Request\ServerNormalizerInterface.

# createServerRequest

Create a new HttpSoft\Request\ServerRequest instance.

/**
 * @param string $method
 * @param UriInterface|string $uri
 * @param array $serverParams
 * @return ServerRequestInterface
 */
public function createServerRequest(string $method, $uri, array $serverParams = []): ServerRequestInterface;

Создает экземпляр HttpSoft\Request\ServerRequest с пустыми данными для суперглобальных массивов. В отличие от методов create() и createFromGlobals() он возвращает экземпляр HttpSoft\Request\ServerRequest с потоком php://temp.

$factory = new ServerRequestFactory();
$request = $factory->createServerRequest('GET', '', []);

$request->getMethod(); // 'GET'
$request->getProtocolVersion(); // '1.1'
$request->getBody()->getContents(); // ''
$request->getBody()->getMetadata('uri'); // 'php://temp'
(string) $request->getUri(); // ''
$request->getHeaders(); // []

$request->getServerParams(); // []
$request->getUploadedFiles(); // []
$request->getCookieParams(); // []
$request->getQueryParams(); // []
$request->getParsedBody(); // null
$request->getAttributes(); // []