Constants

MIN_STATUS_CODE_VALUE

MIN_STATUS_CODE_VALUE = 100

MAX_STATUS_CODE_VALUE

MAX_STATUS_CODE_VALUE = 599

Properties

$headers

$headers : array

List of all registered headers, as key => array of values.

Type

array

$headerNames

$headerNames : array

Map of normalized header name to original name used to register header.

Type

array

$phrases

$phrases : array

Map of standard HTTP status code/reason phrases

Type

array

$reasonPhrase

$reasonPhrase : string

Type

string

$statusCode

$statusCode : integer

Type

integer

$protocol

$protocol : string

Type

string

Methods

__construct()

__construct(string|\Psr\Http\Message\StreamInterface  $html, integer  $status = 200, array  $headers = array()) 

Create an HTML response.

Produces an HTML response with a Content-Type of text/html and a default status of 200.

Parameters

string|\Psr\Http\Message\StreamInterface $html

HTML or stream for the message body.

integer $status

Integer status code for the response; 200 by default.

array $headers

Array of headers to use at initialization.

Throws

\InvalidArgumentException

if $html is neither a string or stream.

getStatusCode()

getStatusCode() : integer

Gets the response status code.

The status code is a 3-digit integer result code of the server's attempt to understand and satisfy the request.

Returns

integer —

Status code.

getReasonPhrase()

getReasonPhrase() : string

Gets the response reason phrase associated with the status code.

Because a reason phrase is not a required element in a response status line, the reason phrase value MAY be null. Implementations MAY choose to return the default RFC 7231 recommended reason phrase (or those listed in the IANA HTTP Status Code Registry) for the response's status code.

Returns

string —

Reason phrase; must return an empty string if none present.

withStatus()

withStatus(integer  $code, string  $reasonPhrase = '') : static

Return an instance with the specified status code and, optionally, reason phrase.

If no reason phrase is specified, implementations MAY choose to default to the RFC 7231 or IANA recommended reason phrase for the response's status code.

This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the updated status and reason phrase.

Parameters

integer $code

The 3-digit integer result code to set.

string $reasonPhrase

The reason phrase to use with the provided status code; if none is provided, implementations MAY use the defaults as suggested in the HTTP specification.

Returns

static

getProtocolVersion()

getProtocolVersion() : string

Retrieves the HTTP protocol version as a string.

The string MUST contain only the HTTP version number (e.g., "1.1", "1.0").

Returns

string —

HTTP protocol version.

withProtocolVersion()

withProtocolVersion(string  $version) : static

Return an instance with the specified HTTP protocol version.

The version string MUST contain only the HTTP version number (e.g., "1.1", "1.0").

This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the new protocol version.

Parameters

string $version

HTTP protocol version

Returns

static

getHeaders()

getHeaders() : array

Retrieves all message headers.

The keys represent the header name as it will be sent over the wire, and each value is an array of strings associated with the header.

// Represent the headers as a string
foreach ($message->getHeaders() as $name => $values) {
    echo $name . ": " . implode(", ", $values);
}

// Emit headers iteratively:
foreach ($message->getHeaders() as $name => $values) {
    foreach ($values as $value) {
        header(sprintf('%s: %s', $name, $value), false);
    }
}

Returns

array —

Returns an associative array of the message's headers. Each key MUST be a header name, and each value MUST be an array of strings.

hasHeader()

hasHeader(string  $header) : boolean

Checks if a header exists by the given case-insensitive name.

Parameters

string $header

Case-insensitive header name.

Returns

boolean —

Returns true if any header names match the given header name using a case-insensitive string comparison. Returns false if no matching header name is found in the message.

getHeader()

getHeader(string  $header) : array<mixed,string>

Retrieves a message header value by the given case-insensitive name.

This method returns an array of all the header values of the given case-insensitive header name.

If the header does not appear in the message, this method MUST return an empty array.

Parameters

string $header

Case-insensitive header field name.

Returns

array<mixed,string> —

An array of string values as provided for the given header. If the header does not appear in the message, this method MUST return an empty array.

getHeaderLine()

getHeaderLine(string  $name) : string

Retrieves a comma-separated string of the values for a single header.

This method returns all of the header values of the given case-insensitive header name as a string concatenated together using a comma.

NOTE: Not all header values may be appropriately represented using comma concatenation. For such headers, use getHeader() instead and supply your own delimiter when concatenating.

If the header does not appear in the message, this method MUST return an empty string.

Parameters

string $name

Case-insensitive header field name.

Returns

string —

A string of values as provided for the given header concatenated together using a comma. If the header does not appear in the message, this method MUST return an empty string.

withHeader()

withHeader(string  $header, string|array<mixed,string>  $value) : static

Return an instance with the provided header, replacing any existing values of any headers with the same case-insensitive name.

While header names are case-insensitive, the casing of the header will be preserved by this function, and returned from getHeaders().

This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the new and/or updated header and value.

Parameters

string $header

Case-insensitive header field name.

string|array<mixed,string> $value

Header value(s).

Throws

\InvalidArgumentException

for invalid header names or values.

Returns

static

withAddedHeader()

withAddedHeader(string  $header, string|array<mixed,string>  $value) : static

Return an instance with the specified header appended with the given value.

Existing values for the specified header will be maintained. The new value(s) will be appended to the existing list. If the header did not exist previously, it will be added.

This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that has the new header and/or value.

Parameters

string $header

Case-insensitive header field name to add.

string|array<mixed,string> $value

Header value(s).

Throws

\InvalidArgumentException

for invalid header names or values.

Returns

static

withoutHeader()

withoutHeader(string  $header) : static

Return an instance without the specified header.

Header resolution MUST be done without case-sensitivity.

This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return an instance that removes the named header.

Parameters

string $header

Case-insensitive header field name to remove.

Returns

static

withBody()

withBody(\Psr\Http\Message\StreamInterface  $body) : static

Return an instance with the specified message body.

The body MUST be a StreamInterface object.

This method MUST be implemented in such a way as to retain the immutability of the message, and MUST return a new instance that has the new body stream.

Parameters

\Psr\Http\Message\StreamInterface $body

Body.

Throws

\InvalidArgumentException

When the body is not valid.

Returns

static

injectContentType()

injectContentType(string  $contentType, array  $headers) : array

Inject the provided Content-Type, if none is already present.

Parameters

string $contentType
array $headers

Returns

array —

Headers with injected Content-Type

setStatusCode()

setStatusCode(integer  $code, string  $reasonPhrase = '') 

Set a valid status code.

Parameters

integer $code
string $reasonPhrase

Throws

\InvalidArgumentException

on an invalid status code.

getStream()

getStream(  $stream,   $modeIfNotInstance) 

Parameters

$stream
$modeIfNotInstance

setHeaders()

setHeaders(array  $originalHeaders) 

Filter a set of headers to ensure they are in the correct internal format.

Used by message constructors to allow setting all initial headers at once.

Parameters

array $originalHeaders

Headers to filter.

validateProtocolVersion()

validateProtocolVersion(string  $version) 

Validate the HTTP protocol version

Parameters

string $version

Throws

\InvalidArgumentException

on invalid HTTP protocol version

filterHeaderValue()

filterHeaderValue(mixed  $values) : array<mixed,string>

Parameters

mixed $values

Returns

array<mixed,string>

assertHeader()

assertHeader(string  $name) 

Ensure header name and values are valid.

Parameters

string $name

Throws

\InvalidArgumentException