# Класс HttpSoft\Message\ServerRequest
Класс, реализующий Psr\Http\Message\ServerRequestInterface.
Объект
HttpSoft\Message\ServerRequest
является неизменяемым. Вы можете использовать сеттеры (с префиксомwith
иwithout
), которые возвращают новый экземпляр класса с измененными данными.
use HttpSoft\Message\ServerRequest;
$request = new ServerRequest(
$_SERVER,
$_FILES,
$_COOKIE,
$_GET,
$_POST,
'GET', // Метод запроса
'http://example.com', // URI запроса
['Host' => 'example.com', /* Другие заголовки */],
'php://temp', // Тело HTTP-сообщения
'1.1' // Версия HTTP-протокола
);
// Используя сеттеры
$request
->withUploadedFiles([/* Данные файлов */])
->withCookieParams([/* Cookie-данные */])
->withQueryParams([/* Get-данные */])
->withParsedBody([/* Post-данные */])
->withAttribute('page', '3' /* Любые пользовательские данные */);
# Публичные методы
Оригинальное подробное описание методов смотрите в Psr\Http\Message\ServerRequestInterface.
/**
* @param array $serverParams
* @param array $uploadedFiles
* @param array $cookieParams
* @param array $queryParams
* @param array|object|null $parsedBody
* @param string $method
* @param UriInterface|string $uri
* @param array $headers
* @param StreamInterface|string|resource $body
* @param string $protocol
*/
public function __construct(
array $serverParams = [],
array $uploadedFiles = [],
array $cookieParams = [],
array $queryParams = [],
$parsedBody = null,
string $method = 'GET',
$uri = '',
array $headers = [],
$body = 'php://temp',
string $protocol = '1.1'
);
Ниже представлены методы, которые определены в интерфейсе Psr\Http\Message\ServerRequestInterface. Все остальные методы с описанием находятся в подключаемых трейтах (HttpSoft\Message\RequestTrait и HttpSoft\Message\MessageTrait).
# getServerParams
Возвращает параметры сервера.
public function getServerParams(): array;
# getCookieParams
Возвращает cookies.
public function getCookieParams(): array;
# withCookieParams
Возвращает новый экземпляр с указанными cookies.
public function withCookieParams(array $cookies): ServerRequestInterface;
Массив $cookies
должен быть совместим со структурой $_COOKIE
.
$request->getCookieParams(); // []
$newRequest = $request->withCookieParams(['cookie_name' => 'cookie-value']);
$newRequest->getCookieParams(); // ['cookie_name' => 'cookie-value']
$request->getCookieParams(); // []
# getQueryParams
Возвращает аргументы строки запроса.
public function getQueryParams(): array;
# withQueryParams
Возвращает новый экземпляр с указанными аргументами строки запроса.
public function withQueryParams(array $query): ServerRequestInterface;
Массив $query
должен быть совместим со структурой $_GET
.
$request->getQueryParams(); // []
$newRequest = $request->withQueryParams(['query_string_key' => 'query-string-value']);
$newRequest->getQueryParams(); // ['query_string_key' => 'query-string-value']
$request->getQueryParams(); // []
# getUploadedFiles
Возвращает нормализованные данные загружаемых файлов.
public function getUploadedFiles(): array;
Этот метод возвращает метаданные загружаемых файлов в нормализованном дереве, причем каждый элемент является экземпляром Psr\Http\Message\UploadedFileInterface.
# withUploadedFiles
Возвращает новый экземпляр с указанными загружаемыми файлами.
public function withUploadedFiles(array $uploadedFiles): ServerRequestInterface;
Массив $uploadedFiles
должен быть нормализованным деревом, причем каждый элемент является экземпляром Psr\Http\Message\UploadedFileInterface, иначе будет брошено исключение \InvalidArgumentException
.
$request->getUploadedFiles(); // []
$newRequest = $request->withUploadedFiles([
'file' => new UploadedFile('/tmp/phpN3FmFr', 1024, UPLOAD_ERR_OK, 'file.txt', 'text/plain'),
]);
$newRequest->getUploadedFiles()['file']->getClientFilename(); // 'file.txt'
$newRequest->getUploadedFiles()['file']->getClientMediaType(); // 'text/plain'
$newRequest->getUploadedFiles()['file']->getStream()->getMetadata('uri'); // '/tmp/phpN3FmFr'
$newRequest->getUploadedFiles()['file']->getError(); // 0 (UPLOAD_ERR_OK)
$newRequest->getUploadedFiles()['file']->getSize(); // 1024
$request->getUploadedFiles(); // []
// throws InvalidArgumentException
$request->withUploadedFiles([
'file' => [
'name' => 'file.txt',
'type' => 'text/plain',
'tmp_name' => '/tmp/phpN3FmFr',
'error' => UPLOAD_ERR_OK,
'size' => 1024,
],
]);
# getParsedBody
Возвращает параметры, указанные в теле запроса.
/**
* @return null|array|object
*/
public function getParsedBody();
# withParsedBody
Возвращает новый экземпляр с указанными параметрами тела запроса.
/**
* @param null|array|object $data
* @return static
*/
public function withParsedBody($data): ServerRequestInterface;
Если тип содержимого запроса (Content-Type
) - application/x-www-form-urlencoded
или multipart/form-data
, а метод запроса - POST
, то значение $data
должно быть содержимым $_POST
. В противном случае могут быть возвращены любые результаты десериализации содержимого тела запроса, но только в виде массива
, объекта
или null
, иначе будет брошено исключение \InvalidArgumentException
.
$request->getParsedBody(); // []
$newRequest = $request->withParsedBody(['post_data_key' => 'post_data-value']);
$newRequest->getParsedBody(); // ['post_data_key' => 'post_data-value']
$request->getParsedBody(); // []
// throws InvalidArgumentException
$request->withParsedBody(json_encode(['post_data_key' => 'post_data-value']);
# getAttributes
Возвращает все атрибуты, полученные из запроса, если они были заданы.
public function getAttributes(): array;
«Атрибуты» запроса могут использоваться для обеспечения возможности прикрепления к запросу и получения из запроса любых параметров, например: результатов операций сопоставления путей; результатов расшифровки файлов cookie; результатов десериализации тел сообщений, не закодированных в форме; и т.д. Атрибуты будут специфичны для каждого приложения и запроса и могут быть изменяемыми.
# getAttribute
Возвращает один атрибут, полученный из запроса, или значение по умолчанию, если атрибут не был установлен.
/**
* @see getAttributes()
* @param string $name
* @param mixed $default
* @return mixed
*/
public function getAttribute($name, $default = null);
# withAttribute
Возвращает новый экземпляр с указанным атрибутом запроса.
/**
* @see getAttributes()
* @param string $name
* @param mixed $value
* @return static
*/
public function withAttribute($name, $value): ServerRequestInterface;
Этот метод позволяет задать один производный атрибут запроса, как описано в getAttributes()
.
$request->getAttributes(); // []
$request->getAttribute('page'); // null
$request->getAttribute('page', 0); // 0
$newRequest = $request->withAttribute('page', 3);
$newRequest->getAttributes(); // ['page' => 3]
$newRequest->getAttribute('page'); // 3
$request->getAttributes(); // []
# withoutAttribute
Возвращает новый экземпляр без указанного атрибута запроса.
/**
* @see getAttributes()
* @param string $name
* @return static
*/
public function withoutAttribute($name): ServerRequestInterface;
Этот метод позволяет удалить один производный атрибут запроса, как описано в getAttributes()
.
$request->getAttributes(); // ['page' => 3]
$request->getAttribute('page'); // 3
$newRequest = $request->withoutAttribute('page');
$newRequest->getAttributes(); // []
$newRequest->getAttribute('page'); // null
$newRequest->getAttribute('page', 0); // 0
$request->getAttributes(); // ['page' => 3]