Class Response
Implements methods for HTTP responses.
All of the following examples assume that $response is an
instance of this class.
Get header values
Header names are case-insensitive, but normalized to Title-Case when the response is parsed.
$val = $response->getHeaderLine('content-type');
Will read the Content-Type header. You can get all set headers using:
$response->getHeaders();
Get the response body
You can access the response body stream using:
$content = $response->getBody();
You can get the body string using:
$content = $response->getStringBody();
If your response body is in XML or JSON you can use special content type specific accessors to read the decoded data. JSON data will be returned as arrays, while XML data will be returned as SimpleXML nodes:
// Get as XML
$content = $response->getXml()
// Get as JSON
$content = $response->getJson()
If the response cannot be decoded, null will be returned.
Check the status code
You can access the response status code using:
$content = $response->getStatusCode();
Constants
-
stringMETHOD_DELETE ¶'DELETE'HTTP DELETE method
-
stringMETHOD_GET ¶'GET'HTTP GET method
-
stringMETHOD_HEAD ¶'HEAD'HTTP HEAD method
-
stringMETHOD_OPTIONS ¶'OPTIONS'HTTP OPTIONS method
-
stringMETHOD_PATCH ¶'PATCH'HTTP PATCH method
-
stringMETHOD_POST ¶'POST'HTTP POST method
-
stringMETHOD_PUT ¶'PUT'HTTP PUT method
-
stringMETHOD_TRACE ¶'TRACE'HTTP TRACE method
-
intSTATUS_ACCEPTED ¶202HTTP 202 code
-
intSTATUS_CREATED ¶201HTTP 201 code
-
intSTATUS_FOUND ¶302HTTP 302 code
-
intSTATUS_MOVED_PERMANENTLY ¶301HTTP 301 code
-
intSTATUS_NON_AUTHORITATIVE_INFORMATION ¶203HTTP 203 code
-
intSTATUS_NO_CONTENT ¶204HTTP 204 code
-
intSTATUS_OK ¶200HTTP 200 code
-
intSTATUS_SEE_OTHER ¶303HTTP 303 code
-
intSTATUS_TEMPORARY_REDIRECT ¶307HTTP 307 code
Property Summary
-
$_cookies protected
arrayThe array of cookies in the response.
-
$_json protected
arrayCached decoded JSON data.
-
$_xml protected
SimpleXMLElementCached decoded XML data.
-
$code protected
intThe status code of the response.
-
$cookies protected
Cake\Http\Cookie\CookieCollectionCookie Collection instance
-
$headerNames protected
arrayMap of normalized header name to original name used to register header.
-
$headers protected
arrayList of all registered headers, as key => array of values.
-
$reasonPhrase protected
stringThe reason phrase for the status code
Method Summary
-
__construct() public
Constructor
-
_decodeGzipBody() protected
Uncompress a gzip response.
-
_getBody() protected
Provides magic __get() support.
-
_getCookies() protected
Property accessor for
$this->cookies -
_getHeaders() protected
Provides magic __get() support.
-
_getJson() protected
Get the response body as JSON decoded data.
-
_getXml() protected
Get the response body as XML decoded data.
-
_parseHeaders() protected
Parses headers if necessary.
-
buildCookieCollection() protected
Lazily build the CookieCollection and cookie objects from the response header
-
cookies() public
Get all cookies
-
getBody() public
Gets the body of the message.
-
getCookie() public
Get the value of a single cookie.
-
getCookieCollection() public
Get the cookie collection from this response.
-
getCookieData() public
Get the full data for a single cookie.
-
getCookies() public
Get the all cookie data.
-
getEncoding() public
Get the encoding if it was set.
-
getHeader() public
Retrieves a message header value by the given case-insensitive name.
-
getHeaderLine() public
Retrieves a comma-separated string of the values for a single header.
-
getHeaders() public
Retrieves all message headers.
-
getJson() public
Get the response body as JSON decoded data.
-
getProtocolVersion() public
Retrieves the HTTP protocol version as a string.
-
getReasonPhrase() public
Gets the response reason phrase associated with the status code.
-
getStatusCode() public
Gets the response status code.
-
getStringBody() public
Get the response body as string.
-
getXml() public
Get the response body as XML decoded data.
-
hasHeader() public
Checks if a header exists by the given case-insensitive name.
-
isOk() public
Check if the response status code was in the 2xx/3xx range
-
isRedirect() public
Check if the response had a redirect status code.
-
isSuccess() public
Check if the response status code was in the 2xx range
-
withAddedHeader() public
Return an instance with the specified header appended with the given value.
-
withBody() public
Return an instance with the specified message body.
-
withHeader() public
Return an instance with the provided header, replacing any existing values of any headers with the same case-insensitive name.
-
withProtocolVersion() public
Return an instance with the specified HTTP protocol version.
-
withStatus() public
Return an instance with the specified status code and, optionally, reason phrase.
-
withoutHeader() public
Return an instance without the specified header.
Method Detail
__construct() ¶ public
__construct(array $headers = [], string $body = '')
Constructor
Parameters
-
array$headers optional Unparsed headers.
-
string$body optional The response body.
_decodeGzipBody() ¶ protected
_decodeGzipBody(string $body): string
Uncompress a gzip response.
Looks for gzip signatures, and if gzinflate() exists, the body will be decompressed.
Parameters
-
string$body Gzip encoded body.
Returns
stringThrows
RuntimeExceptionWhen attempting to decode gzip content without gzinflate.
_getXml() ¶ protected
_getXml(): SimpleXMLElement|null
Get the response body as XML decoded data.
Returns
SimpleXMLElement|null_parseHeaders() ¶ protected
_parseHeaders(array $headers): void
Parses headers if necessary.
- Decodes the status code and reasonphrase.
- Parses and normalizes header names + values.
Parameters
-
array$headers Headers to parse.
Returns
voidbuildCookieCollection() ¶ protected
buildCookieCollection(): void
Lazily build the CookieCollection and cookie objects from the response header
Returns
voidgetCookie() ¶ public
getCookie(string $name): string|array|null
Get the value of a single cookie.
Parameters
-
string$name The name of the cookie value.
Returns
string|array|nullgetCookieCollection() ¶ public
getCookieCollection(): Cake\Http\Cookie\CookieCollection
Get the cookie collection from this response.
This method exposes the response's CookieCollection instance allowing you to interact with cookie objects directly.
Returns
Cake\Http\Cookie\CookieCollectiongetCookieData() ¶ public
getCookieData(string $name): array|null
Get the full data for a single cookie.
Parameters
-
string$name The name of the cookie value.
Returns
array|nullgetEncoding() ¶ public
getEncoding(): string|null
Get the encoding if it was set.
Returns
string|nullgetHeader() ¶ public
getHeader(string $header): 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
string[]getHeaderLine() ¶ public
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
stringgetHeaders() ¶ public
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
arraygetProtocolVersion() ¶ public
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
stringgetReasonPhrase() ¶ public
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
stringgetStatusCode() ¶ public
getStatusCode(): int
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
intgetXml() ¶ public
getXml(): SimpleXMLElement|null
Get the response body as XML decoded data.
Returns
SimpleXMLElement|nullhasHeader() ¶ public
hasHeader(string $header): bool
Checks if a header exists by the given case-insensitive name.
Parameters
-
string$header Case-insensitive header name.
Returns
boolisOk() ¶ public
isOk(): bool
Check if the response status code was in the 2xx/3xx range
Returns
boolisRedirect() ¶ public
isRedirect(): bool
Check if the response had a redirect status code.
Returns
boolisSuccess() ¶ public
isSuccess(): bool
Check if the response status code was in the 2xx range
Returns
boolwithAddedHeader() ¶ public
withAddedHeader(string $name, string|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$name Case-insensitive header field name to add.
-
string|string[]$value Header value(s).
Returns
staticThrows
Exception\InvalidArgumentExceptionFor invalid header names or values.
withBody() ¶ public
withBody(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
-
StreamInterface$body Body.
Returns
staticThrows
Exception\InvalidArgumentExceptionWhen the body is not valid.
withHeader() ¶ public
withHeader(string $name, string|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$name Case-insensitive header field name.
-
string|string[]$value Header value(s).
Returns
staticThrows
Exception\InvalidArgumentExceptionFor invalid header names or values.
withProtocolVersion() ¶ public
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
staticwithStatus() ¶ public
withStatus(int $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
-
int$code The status code to set.
-
string$reasonPhrase optional The status reason phrase.
Returns
staticwithoutHeader() ¶ public
withoutHeader(string $name): 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$name Case-insensitive header field name to remove.
Returns
staticProperty Detail
$headerNames ¶ protected
Map of normalized header name to original name used to register header.
Type
array