# Класс HttpSoft\Cookie\CookieManager

Класс для управления куками, реализующий HttpSoft\Cookie\CookieManagerInterface.

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

use HttpSoft\Cookie\Cookie;
use HttpSoft\Cookie\CookieManager;

/**
 * @var HttpSoft\Emitter\EmitterInterface $emitter
 * @var Psr\Http\Message\ResponseInterface $response
 */

// Создать куки
$cookie1 = new Cookie('test', 'value', '+1 hour');
$cookie2 = new Cookie('test2', 'value', time() + 3600, '.example.com', '/path');

// Установить куки в менеджер
$manager = new CookieManager([$cookie1, $cookie2]);
// или
$manager = new CookieManager();
$manager->setMultiple([$cookie1, $cookie2]);
// или
$manager->set($cookie1);
$manager->set($cookie2);

// Установить все куки в ответ для отправки
$response = $manager->send($response);
// Если не нужно удалять из ответа ранее установленные куки
$response = $manager->send($response, false);

// Отправить ответ клиенту
$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\CookieManagerInterface.

/**
 * @param CookieInterface[] $cookies
 */
public function __construct(array $cookies = [])

Если $cookies невалидна, будет брошено исключение \InvalidArgumentException.

# set

Устанавливает куку.

public function set(CookieInterface $cookie): void;

# setMultiple

Устанавливает несколько кук.

/**
 * @param CookieInterface[] $cookies
 */
public function setMultiple(array $cookies): void;

Если $cookies невалидна, будет брошено исключение \InvalidArgumentException.

# get

Возвращает куку с указанным именем.

public function get(string $name): ?CookieInterface;

Возвращает экземпляр HttpSoft\Cookie\CookieInterface или null, если кука не существует.

# getAll

Возвращает все куки или пустой массив, если куки не существуют.

/**
 * @return CookieInterface[]
 */
public function getAll(): array;

# getValue

Возвращает значение куки по указанному имени.

public function getValue(string $name): ?string;

Возвращает значение куки с указанным именем или null, если куки не существует.

# getIterator

Возвращает внешний итератор с куками.

public function getIterator(): ArrayIterator;

# has

Проверяет, существует ли кука с указанным именем.

public function has(string $name): bool;

# remove

Удаляет и возвращает удаленную куку или null, если кука не существует.

public function remove(string $name): ?CookieInterface;

# clear

Удаляет все куки.

public function clear(): void;

# count

Возвращает количество кук.

public function count(): int;

# send

Устанавливает все куки в ответ и возвращает клонированный экземпляр ответа с установленными куками.

/**
 * @param Psr\Http\Message\ResponseInterface $response экземпляр ответа реализующий PSR-7.
 * @param bool $removeResponseCookies следует ли удалять ранее установленные куки из ответа.
 * @return Psr\Http\Message\ResponseInterface ответ с установленными куками.
 */
public function send(
    ResponseInterface $response, 
    bool $removeResponseCookies = true
): ResponseInterface;

Этот метод должен быть вызван перед отправкой ответа. Смотрите Psr\Http\Message\ResponseInterface.