phpcraftdream/figcookies

PSR-7 HTTP消息接口的Cookies。

2.0.0 2017-10-01 14:45 UTC

This package is auto-updated.

Last update: 2024-09-23 12:05:30 UTC


README

管理PSR-7请求和响应的Cookies。它是由dflydev/dflydev-fig-cookies分叉而来。

Build Status

要求

安装

$> 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。