phasync
HTTP client / Response

Class

Response

A PSR-7 response.

Introduction#

Immutable, as PSR-7 requires: the with...() methods return a modified copy. The reason phrase defaults to the standard one for the status code (Response::PHRASES). The body is a StreamInterface: StringStream, ResourceStream or EmptyStream.

Class synopsis#

class Response implements ResponseInterface, MessageInterface {
    /* Methods */
    public Response::__construct(
        int $statusCode = 200,
        array $headers = [],
        ?StreamInterface $body = null,
        string $protocolVersion = '1.1',
        ?string $reasonPhrase = null
    )
    public Response::getStatusCode(): int
    public Response::withStatus($code, $reasonPhrase = ''): ResponseInterface
    public Response::getReasonPhrase(): string
    public Response::getProtocolVersion(): string
    public Response::withProtocolVersion($version): MessageInterface
    public Response::getHeaders(): array
    public Response::hasHeader($name): bool
    public Response::getHeader($name): array
    public Response::getHeaderLine($name): string
    public Response::withHeader($name, $value): MessageInterface
    public Response::withAddedHeader($name, $value): MessageInterface
    public Response::withoutHeader($name): MessageInterface
    public Response::getBody(): StreamInterface
    public Response::withBody($body): MessageInterface
}

Constants#

NameValueDescription
PHRASESarray ( 100 => 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-status', 208 => 'Already Reported', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 306 => 'Switch Proxy', 307 => 'Temporary Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Time-out', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Large', 415 => 'Unsupported Media Type', 416 => 'Requested range not satisfiable', 417 => 'Expectation Failed', 418 => 'I\'m a teapot', 422 => 'Unprocessable Entity', 423 => 'Locked', 424 => 'Failed Dependency', 425 => 'Unordered Collection', 426 => 'Upgrade Required', 428 => 'Precondition Required', 429 => 'Too Many Requests', 431 => 'Request Header Fields Too Large', 451 => 'Unavailable For Legal Reasons', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Time-out', 505 => 'HTTP Version not supported', 506 => 'Variant Also Negotiates', 507 => 'Insufficient Storage', 508 => 'Loop Detected', 511 => 'Network Authentication Required', )Standard HTTP status code/reason phrases.

Methods#

MethodDescription
__constructCreates a response.
getStatusCodeGets the response status code.
withStatusReturns a copy with the status $code, and $reasonPhrase, or the standard phrase for the code when it is ''.
getReasonPhraseGets the response reason phrase associated with the status code.
getProtocolVersionRetrieves the HTTP protocol version as a string.
withProtocolVersionReturn an instance with the specified HTTP protocol version.
getHeadersReturns the message headers.
hasHeaderChecks if a header exists by the given case-insensitive name.
getHeaderRetrieves a message header value by the given case-insensitive name.
getHeaderLineRetrieves a comma-separated string of the values for a single header.
withHeaderReturn an instance with the provided value replacing the specified header.
withAddedHeaderReturn an instance with the specified header appended with the given value.
withoutHeaderReturn an instance without the specified header.
getBodyGets the body of the message.
withBodyReturn an instance with the specified message body.

Examples#

Example 1
$response = new Response(404, ['Content-Type' => 'text/plain'], new StringStream('Not found'));
$response->getStatusCode();       // 404
$response->getReasonPhrase();     // "Not Found"
$stream = new UnbufferedStream();
$response = $response->withBody($stream);

See also#

  • RequestA PSR-7 outgoing, client-side request.
  • UnbufferedStreamA PSR-7 stream for a body that is still being produced, read once and in order.