public function delete($key, array $options = array())
{
$config = $this->_config;
$cookieClass = get_called_class();
return function ($self, $params) use(&$config, $cookieClass) {
$key = $params['key'];
$path = '/' . str_replace('.', '/', $config['name'] . '.' . $key) . '/.';
$cookies = current(Set::extract($_COOKIE, $path));
if (is_array($cookies)) {
$cookies = array_keys(Set::flatten($cookies));
foreach ($cookies as &$name) {
$name = $key . '.' . $name;
}
} else {
$cookies = array($key);
}
foreach ($cookies as &$name) {
$name = $cookieClass::keyFormat($name, $config);
$result = setcookie($name, "", 1, $config['path'], $config['domain'], $config['secure'], $config['httponly']);
if (!$result) {
throw new RuntimeException("There was an error deleting {$name} cookie.");
}
}
return true;
};
}