# PHP пакет для управления HTTP-куками

Пакет HttpSoft\Cookie обеспечивает удобное управление куками в соответствии со спецификацией RFC 6265.

Этот пакет поддерживает интерфейсы PSR-7 и PSR-15.

Для этого пакета требуется PHP версии 7.4 или более поздней.

Установка пакета:

composer require httpsoft/http-cookie

Исходный код на GitHub.

# API

Интерфейсы:

# Использование

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 смотрите здесь.