# Класс HttpSoft\Cookie\CookieCreator

Хелпер для создания HttpSoft\Cookie\Cookie.

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

use HttpSoft\Cookie\CookieCreator;

// Из атрибутов
$cookie = CookieCreator::create('test2', 'value', '+1 hour', '.example.com', '/path', true, true, 'Lax');

// Из необработанного заголовка `Set-Cookie`
$cookie = CookieCreator::createFromString('name=value; Path=/; Secure; HttpOnly; SameSite=Lax; ...');

$cookie->__toString(); // 'name=value; Path=/; Secure; HttpOnly; SameSite=Lax; ...'
// эквивалентно:
(string) $cookie;

# Публичные методы

# create

Создает новый экземпляр HttpSoft\Cookie\Cookie.

/**
 * @param string $name имя куки.
 * @param string $value значение куки.
 * @param DateTimeInterface|int|string|null $expire время истечения срока действия куки.
 * @param string|null $path набор путей для куки.
 * @param string|null $domain набор доменов для куки.
 * @param bool|null $secure следует ли передавать куку только через безопасное соединение HTTPS.
 * @param bool|null $httpOnly можно ли получить доступ к куке только через HTTP-протокол.
 * @param string|null $sameSite будет ли кука доступна для кроссдоменных запросов.
 * @return CookieInterface
 */
public static function create(
    string $name,
    string $value = '',
    $expire = null,
    ?string $domain = null,
    ?string $path = '/',
    ?bool $secure = true,
    ?bool $httpOnly = true,
    ?string $sameSite = Cookie::SAME_SITE_LAX
): CookieInterface;

Если один или несколько аргументов невалидны, будет брошено исключение \InvalidArgumentException.

$cookie = CookieCreator::create('name', 'value', '+1 hour', '.example.com', '/path', true, true, 'Lax');

$cookie->getName(); // 'name'
$cookie->getValue(); // 'value'
$cookie->getMaxAge(); // time() + 3600
$cookie->getExpires(); // 3600
$cookie->getDomain(); // '.example.com'
$cookie->getPath(); // '/path'
$cookie->isExpired(); // false
$cookie->isSession(); // false
$cookie->isSecure(); // true
$cookie->isHttpOnly(); // true
$cookie->getSameSite(); // 'Lax'

# createFromString

Создает новый экземпляр HttpSoft\Cookie\Cookie из необработанного заголовка Set-Cookie.

public static function createFromString(string $string): CookieInterface;

Если $string не является валидным необработанным заголовком Set-Cookie, будет брошено исключение \InvalidArgumentException.

$cookie = CookieCreator::createFromString('name=value; Path=/; Secure; HttpOnly; SameSite=Lax');

$cookie->getName(); // 'name'
$cookie->getValue(); // 'value'
$cookie->getMaxAge(); // 0
$cookie->getExpires(); // 0
$cookie->getDomain(); // null
$cookie->getPath(); // null
$cookie->isExpired(); // false
$cookie->isSession(); // true
$cookie->isSecure(); // true
$cookie->isHttpOnly(); // true
$cookie->getSameSite(); // 'Lax'

CookieCreator::createFromString(''); // throws InvalidArgumentException
CookieCreator::createFromString('name[]'); // throws InvalidArgumentException

Подробнее о заголовке Set-Cookie смотрите здесь.