phpcraftdream / figcookies
PSR-7 HTTP消息接口的Cookies。
2.0.0
2017-10-01 14:45 UTC
Requires
- php: >=7.1
- psr/http-message: ~1.0
Requires (Dev)
- phpunit/phpunit: 6.*
This package is auto-updated.
Last update: 2024-09-23 12:05:30 UTC
README
管理PSR-7请求和响应的Cookies。它是由dflydev/dflydev-fig-cookies分叉而来。
要求
- PHP 7.1+
- psr/http-message
安装
$> composer require phpcraftdream/figcookies
概念
实例化这些集合的示例如下
use PHPCraftdream\FigCookies\Cookies; // Get cookies from request $cookies = (new Cookies)->fromRequest($request); // Get cookies from response $cookies = (new Cookies)->fromResponse($response);
修改这些集合后,它们将渲染成PSR-7请求或PSR-7响应,如下所示
// Render the Cookie headers and add them to the headers of a // PSR-7 Request. $request = $cookies->toRequest($request); // Render the Set-Cookie headers and add them to the headers of a // PSR-7 Response. $response = $cookies->toResponse($response);
基本用法
获取请求Cookie
使用get方法将返回一个Cookie实例。如果不存在指定名称的cookie,则返回的Cookie实例将包含新的空Cookie实例。
use PHPCraftdream\FigCookies\Cookies; $cookie = (new Cookies)->fromRequest($request)->get('theme'); $cookie->isNew(); //true if no cookie by the specified name exists //... $cookie->getValue();
设置请求Cookie
set方法将添加或替换现有cookie。
使用Cookie原始数据作为第二个参数。
use PHPCraftdream\FigCookies\Cookies; $cookies = (new Cookies)->fromRequest($request); $cookies->get('theme')->setValue('acme'); $request = $cookies->toRequest($request);
删除请求Cookie
remove方法如果存在则删除cookie。
use PHPCraftdream\FigCookies\Cookies; $cookies = (new Cookies)->fromRequest($request); $cookies->delete('theme'); $request = $cookies->toRequest($request);
创建cookie
use PHPCraftdream\FigCookies\Cookie; $cookie = (new Cookie('lu')) ->setValue('Rg3vHJZnehYLjVg7qi3bZjzg') ->setExpires('Tue, 15-Jan-2013 21:47:38 GMT') ->setMaxAge(500) ->rememberForever() ->setPath('/') ->setDomain('.example.com') ->setSecure(true) ->setHttpOnly(true) ;
获取响应Cookie
use PHPCraftdream\FigCookies\Cookies; $cookies = (new Cookies)->fromResponse($response); $cookie = $cookies->get('theme');
设置响应Cookie
add方法将添加或替换现有cookie。
use PHPCraftdream\FigCookies\Cookie; use PHPCraftdream\FigCookies\Cookies; $cookies = (new Cookies)->fromResponse($response); $response = $cookies ->add( (new Cookie('token')) ->setValue('a9s87dfz978a9') ->setDomain('example.com') ->setPath('/firewall') ) ->toResponse($response);
修改响应Cookie
use PHPCraftdream\FigCookies\Cookies; $cookies = (new Cookies)->fromResponse($response); $cookie = $cookies->get('visitCount'); $cookie->setValue($cookie->getValue() + 1); $response = $cookies->toResponse($response);
删除响应Cookie
delete方法如果存在则从响应中删除cookie。
use PHPCraftdream\FigCookies\Cookies; $response = (new Cookies) ->fromResponse($response) ->delete('theme') ->toResponse($response);
使响应Cookie过期
expire方法设置一个过期日期在很久以前的cookie。这会导致客户端删除cookie。
use PHPCraftdream\FigCookies\Cookies; $cookies = (new Cookies)->fromResponse($response); $cookies->get('session_cookie')->expire(); $response = $cookies->toResponse($response);
常见问题解答
你是否调用了setcookies?
没有。
渲染的Cookies实例的交付是PSR-7客户端实现的责任。
你处理会话吗?
没有。
在FIG Cookies的基础上构建会话处理是可能的,但超出了此包的范围。
你是否从$_COOKIES读取?
没有。
FIG Cookies只关注PSR-7请求实例上的Cookie头部。
许可
MIT,见LICENSE。