wellrested/cookies

创建Cookie头的辅助类

v1.0.0 2018-10-11 17:44 UTC

This package is auto-updated.

Last update: 2024-09-12 06:57:24 UTC


README

此包提供 CookieFactory 类,该类简化了创建 Set-cookie 头的过程。

要安装,将 wellrested/cookies 添加到项目的 composer.json 文件中。

{
   "require": {
      "wellrested/cookies": "~1.0"
   }
}

示例

使用 CookieFactory 创建 Set-cookie 头的值。

<?php

use WellRESTed\Cookies\CookieFactory;

$cookieFactory = new CookieFactory();

$cookie = $cookieFactory->create('name', 'value');
// name=value

结合PSR-7 ResponseInterface->withAddedHeader 使用这些值向响应中添加cookie。

$response = $response
  ->withAddedHeader('Set-cookie', $cookieFactory->create('name', 'value'))
  ->withAddedHeader('Set-cookie', $cookieFactory->create('another', 'something-else')));

要配置 CookieFactory 以提供 DomainPathSecureHttpOnly,将这些值传递给构造函数。

$cookieFactory = new CookieFactory(
  'www.example.com', // Domain
  '/',               // Path
  true,              // Secure
  true               // HttpOnly
);

$cookie = $cookieFactory->create('name', 'value');
// name=value; Domain=www.example.com; Path=/; Secure; HttpOnly

过期和Max-Age

默认情况下,create() 将创建在用户关闭浏览器时过期的会话cookie。要创建一个持久cookie,提供过期时间为第三个参数。此参数可以有多种形式

数值被读取为 Max-Age 的秒数。

$cookie = $cookieFactory->create('name', 'value', 3600);
// name=value; Max-Age=3600

使用 DateTime 实例来设置特定的过期时间。请注意,CookieFactory 将此 DateTime 转换为符合 RFC7321 的格式为 <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMTHTTP-date

$cookie = $cookieFactory->create('name', 'value', new DateTime('31-Dec-2018 23:00:00 EST'));
// name=value; Expires=Tue, 01 Jan 2019 04:00:00 GMT

您还可以提供一个字符串,该字符串将原样用作过期日期。当您提供字符串时,您负责格式化日期。

$cookie = $cookieFactory->create('name', 'value', new DateTime('Tue, 01 Jan 2019 04:00:00 GMT'));
// name=value; Expires=Tue, 01 Jan 2019 04:00:00 GMT

删除Cookies

要删除cookie,请使用 remove 方法创建一个设置cookie值为空字符串并将过期日期设置为过去的 Set-cookie 头。

$cookie = $cookieFactory->remove('name');
// name=; Expires=Thu, 01 Jan 1970 00:00:00 GMT

开发

要设置本地开发环境,关闭此仓库并运行

docker-compose build
docker-compose run --rm php composer install

要运行单元测试,请运行

docker-compose run --rm php phpunit