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
-
string
METHOD_DELETE ¶'DELETE'
HTTP DELETE method
-
string
METHOD_GET ¶'GET'
HTTP GET method
-
string
METHOD_HEAD ¶'HEAD'
HTTP HEAD method
-
string
METHOD_OPTIONS ¶'OPTIONS'
HTTP OPTIONS method
-
string
METHOD_PATCH ¶'PATCH'
HTTP PATCH method
-
string
METHOD_POST ¶'POST'
HTTP POST method
-
string
METHOD_PUT ¶'PUT'
HTTP PUT method
-
string
METHOD_TRACE ¶'TRACE'
HTTP TRACE method
-
int
STATUS_ACCEPTED ¶202
HTTP 202 code
-
int
STATUS_CREATED ¶201
HTTP 201 code
-
int
STATUS_FOUND ¶302
HTTP 302 code
-
int
STATUS_MOVED_PERMANENTLY ¶301
HTTP 301 code
-
int
STATUS_NON_AUTHORITATIVE_INFORMATION ¶203
HTTP 203 code
-
int
STATUS_NO_CONTENT ¶204
HTTP 204 code
-
int
STATUS_OK ¶200
HTTP 200 code
-
int
STATUS_SEE_OTHER ¶303
HTTP 303 code
-
int
STATUS_TEMPORARY_REDIRECT ¶307
HTTP 307 code
Property Summary
-
$_body protected
string|null
Body for the message.
-
$_cookies protected
array
The array of cookies in the response.
-
$_deprecatedMagicProperties protected
array
Map of deprecated magic properties.
-
$_exposedProperties protected
array
Map of public => property names for __get()
-
$_json protected
array
Cached decoded JSON data.
-
$_xml protected
SimpleXMLElement
Cached decoded XML data.
-
$code protected
int
The status code of the response.
-
$cookies protected
Cake\Http\Cookie\CookieCollection
Cookie Collection instance
-
$headerNames protected
array
Map of normalized header name to original name used to register header.
-
$headers protected
array
List of all registered headers, as key => array of values.
-
$reasonPhrase protected
string
The 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.
-
isSuccess() public
Check if the response status code was in the 2xx range
-
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
string
Throws
RuntimeException
When 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(): 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
void
body() ¶ 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->getJson();
Parameters
-
callable|null
$parser optional The callback to use to decode the response body.
Returns
mixed
buildCookieCollection() ¶ protected
buildCookieCollection(): void
Lazily build the CookieCollection and cookie objects from the response header
Returns
void
convertCookieToArray() ¶ 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
array
cookie() ¶ 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
mixed
getCookie() ¶ 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|null
getCookieCollection() ¶ 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\CookieCollection
getCookieData() ¶ 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|null
getEncoding() ¶ public
getEncoding(): string|null
Get the encoding if it was set.
Returns
string|null
getHeader() ¶ 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
string
getHeaders() ¶ 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
array
getJson() ¶ public
getJson(): array|null
Get the response body as JSON decoded data.
Returns
array|null
getProtocolVersion() ¶ 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
string
getReasonPhrase() ¶ 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
string
getStatusCode() ¶ 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
int
getXml() ¶ public
getXml(): SimpleXMLElement|null
Get the response body as XML decoded data.
Returns
SimpleXMLElement|null
hasHeader() ¶ public
hasHeader(string $header): bool
Checks if a header exists by the given case-insensitive name.
Parameters
-
string
$header Case-insensitive header name.
Returns
bool
header() ¶ 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
mixed
isRedirect() ¶ public
isRedirect(): bool
Check if the response had a redirect status code.
Returns
bool
isSuccess() ¶ public
isSuccess(): bool
Check if the response status code was in the 2xx range
Returns
bool
withAddedHeader() ¶ 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
static
Throws
InvalidArgumentException
for 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
static
Throws
InvalidArgumentException
When 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
static
Throws
InvalidArgumentException
for 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
static
withStatus() ¶ 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
$this
withoutHeader() ¶ 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
static
Property Detail
$headerNames ¶ protected
Map of normalized header name to original name used to register header.
Type
array