bjoern-goetschke / psr7-cookies
PSR7 cookie 处理库
3.0.1
2024-01-06 21:13 UTC
Requires
- php: ^7.4 || ^8.0
- psr/http-message: ^1.0
Requires (Dev)
- ext-mbstring: *
- guzzlehttp/psr7: ^1.8
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpstan/phpstan-strict-rules: ^1.0
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
README
此库提供了类 BjoernGoetschke\Psr7Cookies\HttpRequestCookies
来从 Psr\Http\Message\ServerRequestInterface
请求中读取 cookie,以及类 BjoernGoetschke\Psr7Cookies\HttpResponseCookies
来修改将随 Psr\Http\Message\ResponseInterface
响应发送的 cookie。
基本用法
应用程序可以轻松读取 cookie 值
/** @var \Psr\Http\Message\ServerRequestInterface $request */
$cookies = new \BjoernGoetschke\Psr7Cookies\HttpRequestCookies($request);
if ($cookies->hasCookie('someCookie')) {
$cookieValue = $cookies->getValue('someCookie');
}
同样可以轻松修改响应的 cookie
/** @var \Psr\Http\Message\ResponseInterface $response */
$cookies = \BjoernGoetschke\Psr7Cookies\HttpResponseCookies($response);
// set some cookie until the browser is closed
$cookies->setSessionCookie('someCookie', 'someValue');
// set another cookie for 1 hour (3600 seconds)
$cookies->setCookieFor('anotherCookie', 'anotherValue', 3600);
// delete an existing cookie
$cookies->unsetCookie('existingCookie');
// retrieve the modified response
$response = $cookies->getResponse();
安装
此库可通过 Composer 获取
composer require bjoern-goetschke/psr7-cookies:^3.0
版本控制
发布将按照以下格式使用语义版本进行编号
<主要版本>.<次要版本>.<修订版本>
并遵循以下准则
- 破坏向后兼容性将增加主要版本
- 不破坏向后兼容性的新功能增加次要版本
- 错误修复和杂项更改增加修订版本
有关语义版本控制的更多信息,请访问 http://semver.org/。
许可证
此库在 BSD-2-Clause 许可证下发布。您可以在 LICENSE.txt 中找到此许可证的副本。
API 使用和向后兼容性
有关接口、类、方法等的预期使用的说明使用 @api
标签指定。
如果一个元素不包含 @api
标签,则应将其视为内部元素,其使用可能在任何时间被破坏。
此规则的例外是特殊元素,如构造函数、析构函数或其他钩子方法,这些方法由编程语言定义。这些元素将没有自己的 @api
标签,但可以被视为具有与所属的类或任何其他元素相同的 @api
标签。
该库不提供参数名称的向后兼容性保证。方法将具有 @no-named-arguments
标签,以帮助静态分析工具检测和警告使用带有命名参数的库,但即使某些地方缺失,也不意味着为该特定方法提供了向后兼容性保证。
@api 使用
- 类
- 创建类的新的实例
- 可能在
major
版本中破坏
- 可能在
- 扩展类并添加新的构造函数
- 可能在
major
版本中破坏
- 可能在
- 扩展类并添加新方法
- 可能在任何时候破坏,但
minor
版本应该大部分时间都是好的(如果基础类中添加了非私有方法,则在扩展类中也声明了该方法,则将破坏)
- 可能在任何时候破坏,但
- 创建类的新的实例
- 方法
- 调用方法
- 可能在
major
版本中破坏
- 可能在
- 覆盖方法(扩展类并声明具有相同名称的方法)并最终添加额外的可选参数
- 可能在任何时候破坏,但
minor
版本应该大部分时间都是好的(如果基础类中添加了可选参数,则将破坏)
- 可能在任何时候破坏,但
- 调用方法
- 接口
- 在类型提示中使用接口(需要接口的实例作为参数)
- 可能在
major
版本中破坏
- 可能在
- 调用接口的方法
- 可能在
major
版本中破坏
- 可能在
- 实现接口
- 可能在任何时候破坏,但
minor
版本应该大部分时间都是好的(如果接口中添加了新方法,则将破坏)
- 可能在任何时候破坏,但
- 扩展接口
- 可能在任何时候破坏,但
minor
版本应该大部分时间都是好的(如果在基础接口中添加了方法,并且在扩展接口中也声明了该方法,则将破坏)
- 可能在任何时候破坏,但
- 在类型提示中使用接口(需要接口的实例作为参数)
@api 扩展
- 类
- 创建类的新的实例
- 可能在
major
版本中破坏
- 可能在
- 扩展类并添加新的构造函数
- 可能在
major
版本中破坏
- 可能在
- 扩展类并添加新方法
- 可能在
小版本
更新中出现问题,但大多数情况下应该没有问题,并且可能只在大版本
更新中出现问题(如果基类中添加了一个也在扩展类中声明的非私有方法,则会出错)
- 可能在
- 创建类的新的实例
- 方法
- 调用方法
- 可能在
major
版本中破坏
- 可能在
- 覆盖方法(扩展类并声明具有相同名称的方法)并最终添加额外的可选参数
- 可能在
major
版本中破坏
- 可能在
- 调用方法
- 接口
- 在类型提示中使用接口(需要接口的实例作为参数)
- 可能在
major
版本中破坏
- 可能在
- 调用接口的方法
- 可能在
major
版本中破坏
- 可能在
- 实现接口
- 可能在
major
版本中破坏
- 可能在
- 扩展接口
- 可能在
major
版本中破坏
- 可能在
- 在类型提示中使用接口(需要接口的实例作为参数)
@api 稳定
- 所有标记为稳定的代码可能只在
大版本
更新中出现问题,这意味着除了某些小的内部更改或错误修复外,代码将完全不会发生变化
@api 内部
- 所有标记为内部使用的代码可能在任何时间出现问题,但
补丁版本
应该在大多数情况下都是安全的