文档/容器/服务/Cookies
Cookies
在 HLEB2 框架中,HTTP cookies 由 Cookies 服务处理。
使用 Cookies 在控制器中(以及所有继承自 Hleb\Base\Container 的类)的示例, 例如从 cookies 中获取值:
use Hleb\Reference\CookieInterface;
$value = $this->container->get(CookieInterface::class)->get('cookie_name');
$value = $this->container->cookies()->get('cookie_name');
$value = $this->cookies()->get('cookie_name');
在应用程序代码中访问 cookies 的示例:
use Hleb\Static\Container;
use Hleb\Reference\CookieInterface;
$value = Container::get(CookieInterface::class)->get('cookie_name');
use Hleb\Static\Cookies;
$value = Cookies::get('cookie_name');
也可以通过 依赖注入 接口 Hleb\Reference\Interface\Cookie 获取 Cookies 对象。
为简化示例,以下内容仅包括通过 Hleb\Static\Cookies 进行访问。
#get()
get() 方法按名称返回一个 cookie 对象。
通过该对象,您可以获取原始数据和转换后格式的数据。
框架会处理 HTML 标签转换,这是必要的,如果数据将在页面上显示以避免潜在的 cookie-based XSS 漏洞。
示例展示了多种获取 cookie 值的方式:
use Hleb\Static\Cookies;
$rawValue = Cookies::get('cookie_name')->value();
$clearedStringValue = Cookies::get('cookie_name')->asString();
$integerValue = Cookies::get('cookie_name')->asInt();
$positiveIntegerValue = Cookies::get('cookie_name')->asPositiveInt();
#all()
all() 方法返回一个命名数组,其中包含与 get() 方法获得的对象类似的对象,您可以从中获取所有或特定 cookies 的值。
使用这些方法返回的对象时,最常见的错误是将对象当作值来使用,而不是从对象中获取值。
#set()
使用 set() 方法可以通过名字设置或更新 cookie。第一个参数是 cookie 的名字,第二个参数是要分配的值。第三个参数 'options' 需要一个附加参数的数组,类似于 PHP 函数 setcookie() 的用法,可以在其中设置 'expires'、'path'、'domain'、'secure'、'httponly' 和 'samesite' 等选项。
use Hleb\Static\Cookies;
$options = [
'expires' => time() + 60 * 60 * 24 * 30,
'path' => '/',
'domain' => '.example.com', 'secure' => true, 'httponly' => true, 'samesite' => 'None' ];
Cookies::set('cookie_name', 'value', $options);
#delete()
可以使用 delete() 方法根据名字删除一个 cookie。
#clear()
clear() 方法允许您清除所有 cookies。
#异步模式
在框架的异步使用中,Cookies 服务的方法功能类似,但使用了不同的机制来设置和读取它们。
← 会话
重定向 →
页面翻译:chatgpt 4-o