# Трейт HttpSoft\Message\MessageTrait

Трейт, реализующий методы, определенные в Psr\Http\Message\MessageInterface, используется внутри HttpSoft\Message\RequestTrait и HttpSoft\Message\ResponseTrait.

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

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

Оригинальное подробное описание методов смотрите в 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.