bjoern-goetschke/psr7-cookies

PSR7 cookie 处理库

3.0.1 2024-01-06 21:13 UTC

This package is auto-updated.

Last update: 2024-09-14 21:09:30 UTC


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 内部

  • 所有标记为内部使用的代码可能在任何时间出现问题,但补丁版本应该在大多数情况下都是安全的