ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
_只要你能把握自己,你就能把握任何东西。 -- 古谚语_ ##1.28.1 原生态的支持 应开发同学的需求,这里补充对COOKIE的支持。 因为,确实在项目的开发过程中,有时是需要对COOKIE进行处理的。所以,这里提供了简单的原生态支持。 下面通过代码示例来简明如何使用。 ###(1)注册COOKIE服务 如同其他的服务一样,我们在使用前需要对COOKIE进行注册。不需要用到COOKIE的同学,可以忽略此服务的注册。 在初始化文件init.php中添加如下注册代码: ```javascript //COOKIE DI()->cookie = 'PhalApi_Cookie'; ``` ###(2)使用 查看PhalApi_Cookie提供的接口,可以得到针对COOKIE的三种操作: ```javascript //设置COOKIE服务 DI()->cookie->set('name', 'phalapi', $_SERVER['REQUEST_TIME'] + 600); //获取 echo DI()->cookie->get('name'); //输出 phalapi //删除 DI()->cookie->delete('name'); ``` ##1.28.2 记忆加密升级版 实际情况,项目的使用的情况更为复杂。 比如,需要对数据进行加解密,或者需要突破COOKIE的限制(设置后需要下一次请求才能获取,不过这也正是COOKIE的特点),想记住这一次设置的内容。所以,额外提供了这个升级版本。 ###(1)注册COOKIE服务 和原生态的初始化,有些许不同,在于需要配置指定加解密的服务。如下: ```javascript $config = array('crypt' => $crypt, 'key' => 'a secrect'); DI()->cookie = new PhalApi_Cookie($config); ``` 上面中的crypt即为加密解服务,未指定时使用DI()->crypt,需要实现PhalApi_Crypt接口;key则为对应的密钥。 ###(2)使用COOKIE服务 使用同原生态一样,客户端感知不到区别,这里不再赘述。 ###(3)一个简单的实现示例 假设我们有这样一个简单的加解密类(真的很简单的): ```javascript class Cookie_Crypt_Mock implements PhalApi_Crypt { public function encrypt($data, $key) { return base64_encode($data); } public function decrypt($data, $key) { return base64_decode($data); } } ``` 随后,写一个简单的接口测试一下(因为涉及到COOKIE的操作,需要与浏览器可视化测试,所以没用单元测试): ```javascript public function cookieTest() { $rs = array(); $config = array('crypt' => new Cookie_Crypt_Mock(), 'key' => 'a secrect'); DI()->cookie = new PhalApi_Cookie_Multi($config); $rs['aEKey'] = DI()->cookie->get('name'); DI()->cookie->set('name', 'phalapi', $_SERVER['REQUEST_TIME'] + 600); return $rs; } ``` 运行效果如下: ![apic](http://webtools.qiniudn.com/20150411204629.jpg) 从上图中可以看出,COOKIE在浏览器已经被我们做了“加密”,哈哈~ ##1.28.3 一如其他框架的建议 + 1、敏感数据不要存到COOKIE,以保证数据安全 + 2、大的数据不要存到COOKIE,以保证瘦的客户端 ##1.28.4 扩展你的COOKIE 如需扩展,请重载PhalApi_Cookie基类。