myelophone / cookies-psr7
用于创建PSR-7兼容cookie头的辅助类
dev-main
2024-07-02 22:37 UTC
Requires
- php: >=7
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->withAddedHeader
(ResponseInterface->withHeader
或等)来向响应中添加cookie。
$response = $response->withHeader('Set-cookie', $cookieFactory->create('name', 'value'));
要配置一个CookieFactory
以提供Domain
、Path
、Secure
、HttpOnly
和/或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
转换为符合RFC7321的HTTP-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