# Класс 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.