drewlabs / cookie
请求和响应Cookie的面向对象实现
Requires
- php: >=7.2
Requires (Dev)
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-30 01:29:06 UTC
README
drewlabs/cookie
库提供了一个用于构建和解析Cookie的对象组件。该库还提供了对Cookie
实例的各种不可变方法,以便一旦创建即可更新Cookie实例。
用法
该库为开发者提供了一个用于创建Cookie实例的工厂类。使用cookie factory
类创建Cookie实例的语法如下
<?php use Drewlabs\Cookie\Factory; // Creates a session cookie with name and value as first parameters $cookie = Factory::new()->create('sessionId',uniqid('session').time(), 0);
使用factory
类,开发者可以从原始Cookie字符串创建Cookie实例
use Drewlabs\Cookie\Factory; $expiresAt = (new \DateTimeImmutable())->format('U'); $cookie = Factory::new()->createFromString("sessionId=e8bb43229de9; Expires=$expiresAt; Domain=foo.example.com; Path=/; Secure; HttpOnly");
注意使用工厂类是创建Cookie实例的推荐方法,但您也可以使用Cookie
类的构造函数来创建cookie
实例。构造函数接受与Factory::create()
方法相同的参数。有关支持的参数的更多信息,请参阅文档参考。
基本Cookie API
创建cookie
实例后,您可以通过创建Cookie的修改实例来修改其值。为了避免与内部状态变化相关的面向对象问题,cookie
API不会直接修改其内部状态...而是提供方法来创建源实例的修改副本。以下是更新cookie
实例值的方法列表
-
withValue
<?php $cookie = Factory::new()->create('id', "oldCookieValue"); $cookie2 = $cookie->withValue("newCookieValue"); echo $cookie->getValue(); // oldCookieValue echo $cookie2->getValue(); //newCookieValue
-
withDomain
withDomain
方法允许您更新为生成Cookie的域名。<?php $cookie = Factory::new()->create('id', uniqid('cookie').time()); $cookie2 = $cookie->withDomain("com.azlabs.xyz"); echo $cookie->getDomain(); // null echo $cookie2->getDomain(); //com.azlabs.xyz
-
withPath
withPath
方法更新可能应用Cookie的URL路径。<?php $cookie = Factory::new()->create('id', uniqid('cookie').time()); $cookie2 = $cookie->withPath("/auth"); echo $cookie->getPath(); // / echo $cookie2->getPath(); // /auth
-
withHttpOnly
withHttpOnly
将Cookie更新为仅通过HTTP头发送,不会被任何前端代码修改。它告诉浏览器强制执行Cookie规则并保护Cookie免受前端攻击。$cookie = Factory::new()->create('id', uniqid('cookie').time()); $cookie2 = $cookie->withHttpOnly();
-
withSecure
withSecure
通过强制浏览器通过安全连接发送Cookie来强制执行Cookie规则。<?php $cookie = Factory::new()->create('id', uniqid('cookie').time()); $cookie2 = $cookie->withSecure();
-
__toString()
cookie
实例API还提供了一个__toString()
方法,允许您将cookie
对象转换为字符串表示形式,该表示形式可用于用作Set-Cookie
头的值。