11. Yii 2.0 Cookie

以 Yii 2.0 基础版为例来介绍 Yii 中是如何处理 cookie 的,高级版类似。
Yii 2.0 中对  cookie 进行了封装,类文件为  /basic/vendor/yiisoft/yii2/web 目录下的 Cookie.php 和  CookieCollection.php ,一般我们会在此基础上对  cookie  进行二次封装。

在自定义组件目录 /basic/components 下新建一个类文件 CookieHelper.php,来对 cookie 进行二次封装,代码如下:

    
    name = $key;    // cookie的名称
        $cookie->value = $value; // cookie的值
        if ($expire) {
            $cookie->expire = time() + $expire;    // cookie的有效期,默认直到浏览器会话关闭
        } else {
            $cookie->expire = 0;
        }

        // 响应给浏览器客户端(写入cookie)
        \Yii::$app->response->cookies->add($cookie);  
    }

    /**
     * 获取数据(返回的是一个对象)
     */
    public static function get($key)
    {
        // 从浏览器客户端请求cookie(读取cookie)
        return \Yii::$app->request->cookies->get($key);    
    }

    /**
     * 获取数据(返回具体的值)
     */
    public static function getValue($key, $defaultValue=NULL)
    {
        // 从浏览器客户端请求cookie(读取cookie)
        return \Yii::$app->request->cookies->getValue($key, $defaultValue);    
    }

    /**
     * 删除数据(删除单个cookie)
     */
    public static function del($key)
    {
        \Yii::$app->response->cookies->remove($key);
    }

    /**
     * (注意:该方法并不能删除客户端中的cookie)
     * 撤消当前连接中对 cookie 的所有更改,即让客户端的cookie保持不变。
     */
    public static function cancelAll()
    {
        \Yii::$app->response->cookies->removeAll();
    }
}
然后, 在控制器层,新增一个控制器 CookieController.php,用于测试,代码如下:

     
     ', $username);
    }

    public function actionDel()
    {
        CookieHelper::del('username');    // 删除指定的cookie
//         CookieHelper::cancelAll();    // 撤消前面的代码对cookie的所有操作
    }
}
在浏览器地址栏输入下面的地址,进行测试:
http://basic.com/cookie/index
http://basic.com/cookie/get
http://basic.com/cookie/del

说明:
\Yii::$app->response 和  \Yii::$app->request 下的 cookies 都是 CookieCollection 对象。区别在于:
\Yii::$app->response 下的 CookieCollection 对象 的 readOnly 属性的值为 false,该对象用于写操作。
\Yii::$app->request 下的 CookieCollection 对象 的 readOnly 属性的值为 true,该对象用于读操作。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值