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
-
$_body protected
string|nullBody for the message.
-
$_cookies protected
arrayThe array of cookies in the response.
-
$_deprecatedMagicProperties protected
arrayMap of deprecated magic properties.
-
$_exposedProperties protected
arrayMap of public => property names for __get()
-
$_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
-
__get() public
Read values as properties.
-
__isset() public
isset/empty test with -> syntax.
-
_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.
-
body() public deprecated
Get the response body.
-
buildCookieCollection() protected
Lazily build the CookieCollection and cookie objects from the response header
-
convertCookieToArray() protected
Convert the cookie into an array of its properties.
-
cookie() public deprecated
Read single/multiple cookie values out.
-
cookies() public
Get all cookies
-
encoding() public deprecated
Get the encoding if it was set.
-
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.
-
header() public deprecated
Read single/multiple header value(s) out.
-
headers() public deprecated
Get all headers
-
isOk() public
Check if the response was OK
-
isRedirect() public
Check if the response had a redirect status code.
-
statusCode() public deprecated
Get the status code from the response
-
version() public deprecated
Get the HTTP version used.
-
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.
__get() ¶ public
__get(string $name): mixed
Read values as properties.
Parameters
-
string$name Property name.
Returns
mixed__isset() ¶ public
__isset(string $name): bool
isset/empty test with -> syntax.
Parameters
-
string$name Property name.
Returns
bool_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.
_getJson() ¶ protected
_getJson(): array|null
Get the response body as JSON decoded data.
Returns
array|null_getXml() ¶ protected
_getXml(): null|SimpleXMLElement
Get the response body as XML decoded data.
Returns
null|SimpleXMLElement_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
voidbody() ¶ public
body(callable|null $parser = null): mixed
Get the response body.
By passing in a $parser callable, you can get the decoded response content back.
For example to get the json data as an object:
$body = $response->body('json_decode');
Parameters
-
callable|null$parser optional The callback to use to decode the response body.
Returns
mixedbuildCookieCollection() ¶ protected
buildCookieCollection(): void
Lazily build the CookieCollection and cookie objects from the response header
Returns
voidconvertCookieToArray() ¶ protected
convertCookieToArray(Cake\Http\Cookie\CookieInterface $cookie): array
Convert the cookie into an array of its properties.
This method is compatible with older client code that expects date strings instead of timestamps.
Parameters
-
Cake\Http\Cookie\CookieInterface$cookie Cookie object.
Returns
arraycookie() ¶ public
cookie(string|null $name = null, bool $all = false): mixed
Read single/multiple cookie values out.
Note This method will only provide access to cookies that were added as part of the constructor. If cookies are added post construction they will not be accessible via this method.
Parameters
-
string|null$name optional The name of the cookie you want. Leave null to get all cookies.
-
bool$all optional Get all parts of the cookie. When false only the value will be returned.
Returns
mixedgetCookie() ¶ 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
arraygetJson() ¶ public
getJson(): array|null
Get the response body as JSON decoded data.
Returns
array|nullgetProtocolVersion() ¶ 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(): null|SimpleXMLElement
Get the response body as XML decoded data.
Returns
null|SimpleXMLElementhasHeader() ¶ public
hasHeader(string $header): bool
Checks if a header exists by the given case-insensitive name.
Parameters
-
string$header Case-insensitive header name.
Returns
boolheader() ¶ public
header(string|null $name = null): mixed
Read single/multiple header value(s) out.
Parameters
-
string|null$name optional The name of the header you want. Leave null to get all headers.
Returns
mixedisRedirect() ¶ public
isRedirect(): bool
Check if the response had a redirect status code.
Returns
boolwithAddedHeader() ¶ public
withAddedHeader(string $header, 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$header Case-insensitive header field name to add.
-
string|string[]$value Header value(s).
Returns
staticThrows
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
InvalidArgumentExceptionWhen the body is not valid.
withHeader() ¶ public
withHeader(string $header, 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$header Case-insensitive header field name.
-
string|string[]$value Header value(s).
Returns
staticThrows
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 = ''): $this
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
$thiswithoutHeader() ¶ public
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
staticProperty Detail
$headerNames ¶ protected
Map of normalized header name to original name used to register header.
Type
array