Class CookieComponent
Cookie Component.
Provides enhanced cookie handling features for use in the controller layer. In addition to the basic features offered be Cake\Network\Response, this class lets you:
- Create and read encrypted cookies.
- Store non-scalar data.
- Use hash compatible syntax to read/write/delete values.
Link: http://book.cakephp.org/3.0/en/controllers/components/cookie.html
Property Summary
- 
        $_componentMap protectedarrayA component lookup table used to lazy load component objects. 
- 
        $_config protectedarrayRuntime config 
- 
        $_configInitialized protectedboolWhether the config property has already been configured with defaults 
- 
        $_defaultConfig protectedarrayDefault config 
- 
        $_keyConfig protectedarrayConfig specific to a given top level key name. 
- 
        $_loaded protectedarrayA map of keys that have been loaded. 
- 
        $_registry protectedCake\Controller\ComponentRegistryComponent registry class used to lazy load components. 
- 
        $_response protectedCake\Network\ResponseA reference to the Controller's Cake\Network\Response object 
- 
        $_validCiphers protectedarrayValid cipher names for encrypted cookies. 
- 
        $_values protectedstringValues stored in the cookie. 
- 
        $components publicarrayOther Components this component uses. 
- 
        $request publicCake\Network\RequestRequest object 
- 
        $response publicCake\Network\ResponseResponse object 
Method Summary
- 
          __construct() publicConstructor 
- 
          __debugInfo() publicReturns an array that can be used to describe the internal state of this object. 
- 
          __get() publicMagic method for lazy loading $components. 
- 
          _checkCipher() protectedHelper method for validating encryption cipher names. 
- 
          _configDelete() protectedDelete a single config key 
- 
          _configRead() protectedRead a config variable 
- 
          _configWrite() protectedWrite a config variable 
- 
          _decode() protectedDecodes and decrypts a single value. 
- 
          _decrypt() protectedDecrypts $value using public $type method in Security class 
- 
          _delete() protectedSets a cookie expire time to remove cookie value. 
- 
          _encrypt() protectedEncrypts $value using public $type method in Security class 
- 
          _explode() protectedExplode method to return array from string set in CookieComponent::_implode() Maintains reading backwards compatibility with 1.x CookieComponent::_implode(). 
- 
          _getCookieEncryptionKey() protectedReturns the encryption key to be used. 
- 
          _implode() protectedImplode method to keep keys are multidimensional arrays 
- 
          _load() protectedLoad the cookie data from the request and response objects. 
- 
          _write() protectedSet cookie 
- 
          check() publicReturns true if given key is set in the cookie. 
- 
          config() publicUsage
- 
          configKey() publicSet the configuration for a specific top level key. 
- 
          configShallow() publicMerge provided config with existing config. Unlike config()which does a recursive merge for nested keys, this method does a simple merge.
- 
          delete() publicDelete a cookie value 
- 
          implementedEvents() publicEvents supported by this component. 
- 
          initialize() publicInitialize config data and properties. 
- 
          log() publicConvenience method to write a message to Log. See Log::write() for more information on writing to logs. 
- 
          read() publicRead the value of key path from request cookies. 
- 
          write() publicWrite a value to the response cookies. 
Method Detail
__construct() ¶ public
__construct(Cake\Controller\ComponentRegistry $registry, array $config = [])Constructor
Parameters
- 
                Cake\Controller\ComponentRegistry$registry
- A ComponentRegistry this component can use to lazy load its components 
- 
                array$config optional
- Array of configuration settings. 
__debugInfo() ¶ public
__debugInfo(): arrayReturns an array that can be used to describe the internal state of this object.
Returns
array__get() ¶ public
__get(string $name): mixedMagic method for lazy loading $components.
Parameters
- 
                string$name
- Name of component to get. 
Returns
mixedA Component object or null.
_checkCipher() ¶ protected
_checkCipher(string $encrypt): voidHelper method for validating encryption cipher names.
Parameters
- 
                string$encrypt
- The cipher name. 
Returns
voidThrows
RuntimeExceptionWhen an invalid cipher is provided.
_configDelete() ¶ protected
_configDelete(string $key): voidDelete a single config key
Parameters
- 
                string$key
- Key to delete. 
Returns
voidThrows
Cake\Core\Exception\Exceptionif attempting to clobber existing config
_configRead() ¶ protected
_configRead(string|null $key): mixedRead a config variable
Parameters
- 
                string|null$key
- Key to read. 
Returns
mixed_configWrite() ¶ protected
_configWrite(string|array $key, mixed $value, bool|string $merge = false): voidWrite a config variable
Parameters
- 
                string|array$key
- Key to write to. 
- 
                mixed$value
- Value to write. 
- 
                bool|string$merge optional
- True to merge recursively, 'shallow' for simple merge, false to overwrite, defaults to false. 
Returns
voidThrows
Cake\Core\Exception\Exceptionif attempting to clobber existing config
_decode() ¶ protected
_decode(string $value, string|false $encrypt): stringDecodes and decrypts a single value.
Parameters
- 
                string$value
- The value to decode & decrypt. 
- 
                string|false$encrypt
- The encryption cipher to use. 
Returns
stringDecoded value.
_decrypt() ¶ protected
_decrypt(array $values, string|bool $mode): stringDecrypts $value using public $type method in Security class
Parameters
- 
                array$values
- Values to decrypt 
- 
                string|bool$mode
- Encryption mode 
Returns
stringdecrypted string
_delete() ¶ protected
_delete(string $name): voidSets a cookie expire time to remove cookie value.
This is only done once all values in a cookie key have been removed with delete.
Parameters
- 
                string$name
- Name of cookie 
Returns
void_encrypt() ¶ protected
_encrypt(string $value, string|bool $encrypt, string|null $key = null): stringEncrypts $value using public $type method in Security class
Parameters
- 
                string$value
- Value to encrypt 
- 
                string|bool$encrypt
- Encryption mode to use. False disabled encryption. 
- 
                string|null$key optional
- Used as the security salt only in this time for tests if specified. 
Returns
stringEncoded values
_explode() ¶ protected
_explode(string $string): arrayExplode method to return array from string set in CookieComponent::_implode() Maintains reading backwards compatibility with 1.x CookieComponent::_implode().
Parameters
- 
                string$string
- A string containing JSON encoded data, or a bare string. 
Returns
arrayMap of key and values
_getCookieEncryptionKey() ¶ protected
_getCookieEncryptionKey(): stringReturns the encryption key to be used.
Returns
string_implode() ¶ protected
_implode(array $array): stringImplode method to keep keys are multidimensional arrays
Parameters
- 
                array$array
- Map of key and values 
Returns
stringA json encoded string.
_load() ¶ protected
_load(string|array $key): voidLoad the cookie data from the request and response objects.
Based on the configuration data, cookies will be decrypted. When cookies contain array data, that data will be expanded.
Parameters
- 
                string|array$key
- The key to load. 
Returns
void_write() ¶ protected
_write(string $name, string $value): voidSet cookie
Parameters
- 
                string$name
- Name for cookie 
- 
                string$value
- Value for cookie 
Returns
voidcheck() ¶ public
check(string|null $key = null): boolReturns true if given key is set in the cookie.
Parameters
- 
                string|null$key optional
- Key to check for 
Returns
boolTrue if the key exists
config() ¶ public
config(string|array|null $key = null, mixed|null $value = null, bool $merge = true): mixedUsage
Reading the whole config:
$this->config();Reading a specific value:
$this->config('key');Reading a nested value:
$this->config('some.nested.key');Setting a specific value:
$this->config('key', $value);Setting a nested value:
$this->config('some.nested.key', $value);Updating multiple config settings at the same time:
$this->config(['one' => 'value', 'another' => 'value']);Parameters
- 
                string|array|null$key optional
- The key to get/set, or a complete array of configs. 
- 
                mixed|null$value optional
- The value to set. 
- 
                bool$merge optional
- Whether to recursively merge or overwrite existing config, defaults to true. 
Returns
mixedConfig value being read, or the object itself on write operations.
Throws
Cake\Core\Exception\ExceptionWhen trying to set a key that is invalid.
configKey() ¶ public
configKey(string $keyname, null|string|array $option = null, string|null $value = null): array|nullSet the configuration for a specific top level key.
Examples:
Set a single config option for a key:
$this->Cookie->configKey('User', 'expires', '+3 months');Set multiple options:
$this->Cookie->configKey('User', [
  'expires', '+3 months',
  'httpOnly' => true,
]);Parameters
- 
                string$keyname
- The top level keyname to configure. 
- 
                null|string|array$option optional
- Either the option name to set, or an array of options to set, or null to read config options for a given key. 
- 
                string|null$value optional
- Either the value to set, or empty when $option is an array. 
Returns
array|nullconfigShallow() ¶ public
configShallow(string|array $key, mixed|null $value = null): $thisMerge provided config with existing config. Unlike config() which does
a recursive merge for nested keys, this method does a simple merge.
Setting a specific value:
$this->config('key', $value);Setting a nested value:
$this->config('some.nested.key', $value);Updating multiple config settings at the same time:
$this->config(['one' => 'value', 'another' => 'value']);Parameters
- 
                string|array$key
- The key to set, or a complete array of configs. 
- 
                mixed|null$value optional
- The value to set. 
Returns
$thisThe object itself.
delete() ¶ public
delete(string $key): voidDelete a cookie value
You must use this method before any output is sent to the browser. Failure to do so will result in header already sent errors.
Deleting a top level key will delete all keys nested within that key.
For example deleting the User key, will also delete User.email.
Parameters
- 
                string$key
- Key of the value to be deleted 
Returns
voidimplementedEvents() ¶ public
implementedEvents(): arrayEvents supported by this component.
Uses Conventions to map controller events to standard component callback method names. By defining one of the callback methods a component is assumed to be interested in the related event.
Override this method if you need to add non-conventional event listeners. Or if you want components to listen to non-standard events.
Returns
arrayinitialize() ¶ public
initialize(array $config): voidInitialize config data and properties.
Implement this method to avoid having to overwrite the constructor and call parent.
Parameters
- 
                array$config
- The config data. 
Returns
voidlog() ¶ public
log(mixed $msg, int|string $level = LogLevel::ERROR, string|array $context = []): boolConvenience method to write a message to Log. See Log::write() for more information on writing to logs.
Parameters
- 
                mixed$msg
- Log message. 
- 
                int|string$level optional
- Error level. 
- 
                string|array$context optional
- Additional log data relevant to this message. 
Returns
boolSuccess of log write.
read() ¶ public
read(string|null $key = null): stringRead the value of key path from request cookies.
This method will also allow you to read cookies that have been written in this request, but not yet sent to the client.
Parameters
- 
                string|null$key optional
- Key of the value to be obtained. 
Returns
stringor null, value for specified key
write() ¶ public
write(string|array $key, mixed $value = null): voidWrite a value to the response cookies.
You must use this method before any output is sent to the browser. Failure to do so will result in header already sent errors.
Parameters
- 
                string|array$key
- Key for the value 
- 
                mixed$value optional
- Value 
Returns
voidProperty Detail
$_configInitialized ¶ protected
Whether the config property has already been configured with defaults
Type
bool$_defaultConfig ¶ protected
Default config
- expires- How long the cookies should last for. Defaults to 1 month.
- path- The path on the server in which the cookie will be available on. If path is set to '/foo/', the cookie will only be available within the /foo/ directory and all sub-directories such as /foo/bar/ of domain. The default value is base path of app. For e.g. if your app is running under a subfolder "cakeapp" of document root the path would be "/cakeapp/" else it would be "/".
- domain- The domain that the cookie is available. To make the cookie available on all subdomains of example.com set domain to '.example.com'.
- secure- Indicates that the cookie should only be transmitted over a secure HTTPS connection. When set to true, the cookie will only be set if a secure connection exists.
- key- Encryption key used when encrypted cookies are enabled. Defaults to Security.salt.
- httpOnly- Set to true to make HTTP only cookies. Cookies that are HTTP only are not accessible in JavaScript. Default false.
- encryption- Type of encryption to use. Defaults to 'aes'.
Type
array$_keyConfig ¶ protected
Config specific to a given top level key name.
The values in this array are merged with the general config to generate the configuration for a given top level cookie name.
Type
array$_loaded ¶ protected
A map of keys that have been loaded.
Since CookieComponent lazily reads cookie data, we need to track which cookies have been read to account for read, delete, read patterns.
Type
array$_registry ¶ protected
Component registry class used to lazy load components.
Type
Cake\Controller\ComponentRegistry$_response ¶ protected
A reference to the Controller's Cake\Network\Response object
Type
Cake\Network\Response$_values ¶ protected
Values stored in the cookie.
Accessed in the controller using $this->Cookie->read('Name.key');
Type
string