Cookies в HTTP-ответах

Cookies позволяют сохранять небольшие данные на стороне клиента. Imhotep предоставляет удобный способ добавления cookies к HTTP-ответам.

Базовый синтаксис

Используйте метод setCookie() для добавления cookie к ответу:

return response('Hello World')->setCookie(
    'name', 'value', $seconds
);
PHP

Метод setCookie принимает такие же аргументы, как и встроенная в PHP функция setcookie:

return response('Hello World')->setCookie(
    name: 'name',
    value: 'value',
    expires: 3600,        // Время жизни в секундах
    path: '/',            // Путь
    domain: '.example.com', // Домен
    secure: true,         // Только через HTTPS
    httpOnly: true,       // Недоступно из JavaScript
    sameSite: 'lax'       // Политика SameSite
);
PHP

Вы можете создать экземпляр Imhotep\Cookie\Cookie и добавить его к ответу:

use Imhotep\Cookie\Cookie;

$cookie = new Cookie('name', 'value', 3600);

return response('Hello World')->setCookie($cookie);
PHP

Или через хелпер cookie():

$cookie = cookie('name', 'value', 3600);

return response('Hello World')->setCookie($cookie);
PHP

Используя метод queue фасада Cookie, можно прикрепить куки к еще не созданному ответу:

use Imhotep\Facades\Cookie;

Cookie::queue('name', 'value', $seconds);

// Cookies будут автоматически добавлены к ответу
return response('Hello World');
PHP

Для удаления cookie используйте метод removeCookie():

return response('Hello World')->removeCookie('name');
PHP

Можно указать путь и домен:

return response('Hello World')->removeCookie('name', '/', '.example.com');
PHP

Если экземпляр ответа еще не создан, используйте метод expire() фасада Cookie:

Cookie::expire('name');
PHP

Получение всех cookies ответа

$response = response('Hello World')
    ->setCookie('name1', 'value1', 3600)
    ->setCookie('name2', 'value2', 3600);

$cookies = $response->cookies();
// Вернёт массив объектов Cookie
PHP

Очистка всех cookies

$response = response('Hello World')->clearCookies();
PHP