# Трейт HttpSoft\Message\MessageTrait
Трейт, реализующий методы, определенные в Psr\Http\Message\MessageInterface, используется внутри HttpSoft\Message\RequestTrait и HttpSoft\Message\ResponseTrait.
# Публичные методы
Оригинальное подробное описание методов смотрите в Psr\Http\Message\MessageInterface.
Сеттеры с префиксом
with
иwithout
не изменяют текущий, а возвращают новый экземпляр класса (использующегоHttpSoft\Message\MessageTrait
) с измененными данными.
# getProtocolVersion
Возвращает версию HTTP-протокола в виде строки.
public function getProtocolVersion(): string;
Пример возвращаемых значений: 1.0
, 1.1
, 2.0
, 2
.
# withProtocolVersion
Возвращает новый экземпляр с указанной версией протокола HTTP.
/**
* @param string $version
* @return static
*/
public function withProtocolVersion($version): MessageInterface;
Если указана невалидная версия HTTP-протокола, будет брошено исключение \InvalidArgumentException
. Поддерживаемые версии: 1.0
, 1.1
, 2.0
и 2
.
$message->getProtocolVersion(); // '1.1'
$newMessage = $message->withProtocolVersion('2');
$newMessage->getProtocolVersion(); // '2'
$message->getProtocolVersion(); // '1.1'
$message->withProtocolVersion('1.1.1') // throws InvalidArgumentException
# getHeaders
Возвращает все значения всех заголовков HTTP-сообщения.
public function getHeaders(): array;
Пример возвращаемых значений:
[
'Content-Encoding' => [
0 => 'gzip',
],
'Content-Security-Policy' => [
0 => 'block-all-mixed-content',
],
'Allow' => [
0 => 'GET',
1 => 'HEAD',
],
];
# hasHeader
Проверяет, существует ли заголовок с указанным именем без учета регистра.
/**
* @param string $name
* @return bool
*/
public function hasHeader($name): bool;
# getHeader
Возвращает значения заголовка по указанному регистронезависимому имени или пустой массив, если заголовка с таким именем не найдено.
/**
* @param string $name
* @return array
*/
public function getHeader($name): array;
Пример возвращаемых значений:
// $request->getHeader('Allow');
[
0 => 'GET',
1 => 'HEAD',
];
# getHeaderLine
Возвращает разделенную запятыми строку значений, по указанному регистронезависимому имени заголовка или пустую строку если заголовка с таким именем не найдено.
/**
* @param string $name
* @return string
*/
public function getHeaderLine($name): string;
Пример возвращаемых значений (для Allow
): 'GET,HEAD'
.
# withHeader
Возвращает новый экземпляр с указанным заголовком и значением, которые заменяют текущие. Имя заголовка регистронезависимо.
/**
* @param string $name
* @param string|string[] $value
* @return static
*/
public function withHeader($name, $value): MessageInterface;
Если указанны невалидное имя заголовка или значение, будет брошено исключение \InvalidArgumentException
.
$message->getHeader('Allow'); // ['POST']
$message->getHeaderLine('Allow'); // 'POST'
$newMessage1 = $message->withHeader('Allow', 'GET');
$newMessage1->getHeader('Allow'); // ['GET']
$newMessage1->getHeaderLine('Allow'); // 'GET'
$newMessage2 = $newMessage1->withHeader('Allow', ['GET', 'HEAD']);
$newMessage2->getHeader('Allow'); // ['GET', 'HEAD']
$newMessage2->getHeaderLine('Allow'); // 'GET,HEAD'
$message->withHeader('All/ow', 'GET') // throws InvalidArgumentException
$message->withHeader('Allow', "GE\nT") // throws InvalidArgumentException
# withAddedHeader
Возвращает новый экземпляр с указанным заголовком, добавляя передаваемое значение. Имя заголовка регистронезависимо.
/**
* @param string $name
* @param string|string[] $value
* @return static
*/
public function withAddedHeader($name, $value): MessageInterface;
Существующие значения для указанного заголовка будут сохранены. Новые значениея будут добавлены к уже существующему списку. Если заголовок ранее не существовал, он будет добавлен.
Если указанны невалидное имя заголовка или значение, будет брошено исключение \InvalidArgumentException
.
$message->getHeader('Allow'); // ['POST']
$message->getHeaderLine('Allow'); // 'POST'
$newMessage1 = $message->withAddedHeader('Allow', 'GET');
$newMessage1->getHeader('Allow'); // ['POST', 'GET']
$newMessage1->getHeaderLine('Allow'); // 'POST,GET'
$newMessage2 = $newMessage1->withAddedHeader('Allow', ['HEAD', 'OPTIONS']);
$newMessage2->getHeader('Allow'); // ['POST', 'GET', 'HEAD', 'OPTIONS']
$newMessage2->getHeaderLine('Allow'); // 'POST,GET,HEAD,OPTIONS'
$message->withAddedHeader('All/ow', 'GET') // throws InvalidArgumentException
$message->withAddedHeader('Allow', "GE\nT") // throws InvalidArgumentException
# withoutHeader
Возвращает новый экземпляр без указанного заголовка. Имя заголовка регистронезависимо.
/**
* @param string $name
* @return static
*/
public function withoutHeader($name): MessageInterface;
Если заголовка с указанным именем не найдено, будет возвращен текущий экземпляр.
$message->getHeader('Allow'); // ['POST']
$message->getHeaderLine('Allow'); // 'POST'
$newMessage = $message->withoutHeader('Allow');
$newMessage->getHeader('Allow'); // []
$newMessage->getHeaderLine('Allow'); // ''
# getBody
Возвращает тело HTTP-сообщения.
public function getBody(): StreamInterface;
Методы Psr\Http\Message\StreamInterface реализованы в HttpSoft\Message\StreamTrait.
# withBody
Возвращает новый экземпляр с указанным телом сообщения.
public function withBody(StreamInterface $body): MessageInterface;
Тело должно быть экземпляром Psr\Http\Message\StreamInterface.