Php 为什么在删除cookie时取消设置cookie变量

Php 为什么在删除cookie时取消设置cookie变量,php,cookies,Php,Cookies,我正在探索Kohana framework的源代码,在浏览器上删除cookie时,它有以下逻辑: public static function delete($name) { // Remove the cookie unset($_COOKIE[$name]); // Nullify the cookie and make it expire return setcookie($name, NULL, -86400, C

我正在探索Kohana framework的源代码,在浏览器上删除cookie时,它有以下逻辑:

public static function delete($name)
    {
        // Remove the cookie
        unset($_COOKIE[$name]);

        // Nullify the cookie and make it expire
        return setcookie($name, NULL, -86400, Cookie::$path, Cookie::$domain, Cookie::$secure, Cookie::$httponly);
    }

我知道函数
setcookie
会将cookie的名称设置为
deleted
(如浏览器cookies视图中所示),并使其过期,以便浏览器下次不再发送cookie。那么为什么第一部分的
unset
不存在呢?

setcookie
将cookie添加到HTTP响应头中。而$\u COOKIE则提供来自请求头的COOKIE。因此,
setcookie
不会影响$\u COOKIE数组的COOKIE(在当前页面加载上)。因此,我们也必须在$\u cookie中取消设置cookie,以确保如果我们想进一步(在当前页面加载中)将此cookie放入$\u cookie数组中,则此cookie不会出现在$\u cookie数组中。

两者都是相同的,并且删除cookie。如果我们删除unset,它肯定会工作并删除cookie。

好的,那么您为什么要从$\u cookie中删除cookie,如果它代表当前请求,并且此请求包含cookie?我想应该很清楚)我们必须在$\u cookie中取消设置cookie,以确保此cookie从$\u cookie数组中删除。为了确保此cookie从$\u cookie数组中删除。为什么我们需要确保这一点?那么,我们是否取消设置它只是为了避免在触发
setcookie
后在当前请求期间意外使用它?考虑到此代码在框架中使用的事实,它看起来并不奇怪。同一cookie可用于应用程序代码的不同位置。