myelophone/cookies-psr7

用于创建PSR-7兼容cookie头的辅助类

dev-main 2024-07-02 22:37 UTC

This package is auto-updated.

Last update: 2024-10-02 23:14:56 UTC


README

此包提供了CookieFactory,一个与PSR-7兼容的类,简化了创建Set-cookie头的操作。

要安装,使用composer

composer require myelophone/cookies-psr7

或在项目的composer.json文件中添加myelophone/cookies-psr7

{
	"require": {
		"myelophone/cookies-psr7": "^1.0"
	}
}

示例

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

<?php

use Myelophone\Cookies\CookieFactory;

$cookieFactory = new CookieFactory();

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

使用这些值与PSR-7的ResponseInterface->withAddedHeaderResponseInterface->withHeader或等)来向响应中添加cookie。

$response = $response->withHeader('Set-cookie', $cookieFactory->create('name', 'value'));

要配置一个CookieFactory以提供DomainPathSecureHttpOnly和/或SameSite,将这些参数传递给构造函数。

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

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

过期时间和Max-Age

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

数值被解释为秒的Max-Age

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

使用DateTime实例来设置特定的过期时间。请注意,CookieFactory将此DateTime转换为符合RFC7321HTTP-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