# PHP пакет для управления HTTP-куками
Пакет HttpSoft\Cookie обеспечивает удобное управление куками в соответствии со спецификацией RFC 6265.
Этот пакет поддерживает интерфейсы PSR-7 и PSR-15.
Для этого пакета требуется PHP версии 7.4 или более поздней.
Установка пакета:
composer require httpsoft/http-cookie
# API
- HttpSoft\Cookie\Cookie — класс, реализующий HttpSoft\Cookie\CookieInterface.
- HttpSoft\Cookie\CookieCreator — хелпер для создания HttpSoft\Cookie\Cookie.
- HttpSoft\Cookie\CookieManager — класс, реализующий HttpSoft\Cookie\CookieManagerInterface.
- HttpSoft\Cookie\CookieSendMiddleware — посредник, реализующий Psr\Http\Server\MiddlewareInterface.
Интерфейсы:
# Использование
use HttpSoft\Cookie\Cookie;
use HttpSoft\Cookie\CookieCreator;
use HttpSoft\Cookie\CookieManager;
use HttpSoft\Cookie\CookieSendMiddleware;
/**
* @var HttpSoft\Emitter\EmitterInterface $emitter
* @var Psr\Http\Message\ResponseInterface $response
* @var Psr\Http\Message\ServerRequestInterface $request
* @var Psr\Http\Server\RequestHandlerInterface $handler
*/
$manager = new CookieManager();
// Создать куки
$cookie1 = new Cookie('test', 'value', '+1 hour');
// или
$cookie2 = CookieCreator::create('test2', 'value', time() + 3600, '.example.com', '/path');
// или из необработанного заголовка `Set-Cookie`
$cookie3 = CookieCreator::createFromString('name=value; Path=/; Secure; HttpOnly; SameSite=Lax; ...');
// Установить куки в менеджер
$manager->set($cookie1);
$manager->set($cookie2);
$manager->set($cookie3);
// Установить все куки в ответ для отправки
$response = $manager->send($response);
// или используя посредника `CookieSendMiddleware`
$middleware = new CookieSendMiddleware($manager);
$response = $middleware->process($request, $handler);
// Отправить ответ клиенту
$emitter->emit($response);
// Альтернатива, если не используется PSR-7
// Установить все куки для отправки с помощью функции `setcookie()`
foreach ($manager->getAll() as $cookie) {
setcookie($cookie->getName(), $cookie->getValue(), [
'expires' => $cookie->getExpires(),
'domain' => $cookie->getDomain(),
'path' => $cookie->getPath(),
'secure' => $cookie->isSecure(),
'httpOnly' => $cookie->isHttpOnly(),
'sameSite' => $cookie->getSameSite(),
]);
}
Подробное описание использования HttpSoft\Cookie\Cookie
смотрите здесь.
Подробное описание использования HttpSoft\Cookie\CookieCreator
смотрите здесь.
Подробное описание использования HttpSoft\Cookie\CookieManager
смотрите здесь.
Подробное описание использования HttpSoft\Cookie\CookieSendMiddleware
смотрите здесь.