# Класс HttpSoft\Cookie\CookieManager
Класс для управления куками, реализующий HttpSoft\Cookie\CookieManagerInterface.
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.
