# Трейт HttpSoft\Message\ResponseTrait

Трейт, реализующий методы, определенные в Psr\Http\Message\ResponseInterface.

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

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

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

Все остальные методы с описанием находятся в подключаемом трейте (HttpSoft\Message\MessageTrait).

Сеттеры с префиксом with не изменяют текущий, а возвращают новый экземпляр класса (использующего HttpSoft\Message\ResponseTrait) с измененными данными.

# getStatusCode

Возвращает код состояния ответа.

public function getStatusCode(): int;

Пример возвращаемых значений: 200, 301, 404, 500.

# getReasonPhrase

Возвращает фразу причины ответа, связанную с кодом состояния.

public function getReasonPhrase(): string;

Пример возвращаемых значений: 'OK', 'Moved Permanently', 'Not Found', 'Internal Server Error'.

# withStatus

Возвращает новый экземпляр с указанным кодом состояния и, при необходимости, поясняющей фразой.

/**
 * @param int $code
 * @param string $reasonPhrase
 * @return static
 */
public function withStatus($code, $reasonPhrase = ''): ResponseInterface;

Если поясняющая фраза не указана, то будет использоваться фраза, которая соответствует коду состояния по умолчанию.

Если указаны невалидные код состояния или поясняющая фраза, будет брошено исключение \InvalidArgumentException.

$response->getStatusCode(); // 200
$response->getReasonPhrase(); // 'OK'

$newResponse = $response->withStatus(404);
$newResponse->getStatusCode(); // 404
$newResponse->getReasonPhrase(); // 'Not Found'

$newResponse = $response->withStatus(404, 'Custom Phrase');
$newResponse->getStatusCode(); // 404
$newResponse->getReasonPhrase(); // 'Custom Phrase'

$response->withStatus(99);  // throws InvalidArgumentException
$response->withStatus(600);  // throws InvalidArgumentException
$response->withStatus('Not int');  // throws InvalidArgumentException
$response->withStatus(200, ['Not string']);  // throws InvalidArgumentException

Подробнее о кодах состояния и поясняющих фразах смотрите здесь и здесь.