Class
CookieCollection
Container class for cookies used in Http\Client.
Provides cookie jar like features for storing cookies between requests, as well as appending cookies to new requests.
Property Summary
-
$cookies protected
Cake\Http\Cookie\CookieInterface[]
Cookie objects
Method Summary
-
__construct() public
Constructor
-
add() public
Add a cookie and get an updated collection.
-
addFromResponse() public
Create a new collection that includes cookies from the response.
-
addToRequest() public
Add cookies that match the path/domain/expiration to the request.
-
checkCookies() protected
Checks if only valid cookie objects are in the array
-
convertCookieToArray() protected
Convert the cookie into an array of its properties.
-
count() public
Get the number of cookies in the collection.
-
createFromHeader() public static
Create a Cookie Collection from an array of Set-Cookie Headers
-
createFromServerRequest() public static
Create a new collection from the cookies in a ServerRequest
-
findMatchingCookies() protected
Find cookies matching the scheme, host, and path
-
get() public
Get stored cookies for a URL.
-
getAll() public
Get all the stored cookies as arrays.
-
getIterator() public
Gets the iterator
-
has() public
Check if a cookie with the given name exists
-
parseSetCookieHeader() protected static
Parse Set-Cookie headers into array
-
remove() public
Create a new collection with all cookies matching $name removed.
-
removeExpiredCookies() protected
Remove expired cookies from the collection.
-
setRequestDefaults() protected
Apply path and host to the set of cookies if they are not set.
-
store() public
Store the cookies from a response.
Method Detail
__construct() ¶ public
__construct(array $cookies = [])
Constructor
Parameters
-
array
$cookies optional Array of cookie objects
add() ¶ public
add(Cake\Http\Cookie\CookieInterface $cookie): static
Add a cookie and get an updated collection.
Cookies are stored by id. This means that there can be duplicate cookies if a cookie collection is used for cookies across multiple domains. This can impact how get(), has() and remove() behave.
Parameters
-
Cake\Http\Cookie\CookieInterface
$cookie Cookie instance to add.
Returns
static
addFromResponse() ¶ public
addFromResponse(Psr\Http\Message\ResponseInterface $response, Psr\Http\Message\RequestInterface $request): static
Create a new collection that includes cookies from the response.
Parameters
-
Psr\Http\Message\ResponseInterface
$response Response to extract cookies from.
-
Psr\Http\Message\RequestInterface
$request Request to get cookie context from.
Returns
static
addToRequest() ¶ public
addToRequest(Psr\Http\Message\RequestInterface $request, array $extraCookies = []): Psr\Http\Message\RequestInterface
Add cookies that match the path/domain/expiration to the request.
This allows CookieCollections to be used as a 'cookie jar' in an HTTP client situation. Cookies that match the request's domain + path that are not expired when this method is called will be applied to the request.
Parameters
-
Psr\Http\Message\RequestInterface
$request The request to update.
-
array
$extraCookies optional Associative array of additional cookies to add into the request. This is useful when you have cookie data from outside the collection you want to send.
Returns
Psr\Http\Message\RequestInterface
checkCookies() ¶ protected
checkCookies(array $cookies): void
Checks if only valid cookie objects are in the array
Parameters
-
array
$cookies Array of cookie objects
Returns
void
Throws
InvalidArgumentException
convertCookieToArray() ¶ protected
convertCookieToArray(Cake\Http\Cookie\CookieInterface $cookie): array
Convert the cookie into an array of its properties.
Primarily useful where backwards compatibility is needed.
Parameters
-
Cake\Http\Cookie\CookieInterface
$cookie Cookie object.
Returns
array
createFromHeader() ¶ public static
createFromHeader(array $header): static
Create a Cookie Collection from an array of Set-Cookie Headers
Parameters
-
array
$header The array of set-cookie header values.
Returns
static
createFromServerRequest() ¶ public static
createFromServerRequest(Psr\Http\Message\ServerRequestInterface $request): static
Create a new collection from the cookies in a ServerRequest
Parameters
-
Psr\Http\Message\ServerRequestInterface
$request The request to extract cookie data from
Returns
static
findMatchingCookies() ¶ protected
findMatchingCookies(string $scheme, string $host, string $path): array
Find cookies matching the scheme, host, and path
Parameters
-
string
$scheme The http scheme to match
-
string
$host The host to match.
-
string
$path The path to match
Returns
array
get() ¶ public
get(string $url): array
Get stored cookies for a URL.
Finds matching stored cookies and returns a simple array of name => value
Parameters
-
string
$url The URL to find cookies for.
Returns
array
has() ¶ public
has(string $name): bool
Check if a cookie with the given name exists
Parameters
-
string
$name The cookie name to check.
Returns
bool
parseSetCookieHeader() ¶ protected static
parseSetCookieHeader(array $values): Cake\Http\Cookie\Cookie[]
Parse Set-Cookie headers into array
Parameters
-
array
$values List of Set-Cookie Header values.
Returns
Cake\Http\Cookie\Cookie[]
remove() ¶ public
remove(string $name): static
Create a new collection with all cookies matching $name removed.
If the cookie is not in the collection, this method will do nothing.
Parameters
-
string
$name The name of the cookie to remove.
Returns
static
removeExpiredCookies() ¶ protected
removeExpiredCookies(string $host, string $path): void
Remove expired cookies from the collection.
Parameters
-
string
$host The host to check for expired cookies on.
-
string
$path The path to check for expired cookies on.
Returns
void
setRequestDefaults() ¶ protected
setRequestDefaults(array $cookies, string $host, string $path): array
Apply path and host to the set of cookies if they are not set.
Parameters
-
array
$cookies An array of cookies to update.
-
string
$host The host to set.
-
string
$path The path to set.
Returns
array
store() ¶ public
store(Response $response, string $url): void
Store the cookies from a response.
Store the cookies that haven't expired. If a cookie has been expired and is currently stored, it will be removed.
Parameters
-
Response
$response The response to read cookies from
-
string
$url The request URL used for default host/path values.
Returns
void