Ir para o conteúdo principal
Página inicial
Github

Cookies

Cookies são gerenciados com um pote de cookies que usa um formato prefixado para isolar os cookies por contexto que compartilhem atributos em comum. Além dos parâmetros usuais, o atributo Partitioned também é suportado.

Para definir um ou mais cookies por jarro, você deve definir uma propriedade e um valor.

use Inphinit\Experimental\Http\CookieJar; $jar1 = new CookieJar('jar1'); $jar1->example = 1; $jar1->send(); $jar2 = new CookieJar('jar2'); $jar2->example = 2; $jar2->send();

Ao usar o método send, cabeçalhos como este serão enviados na resposta:

Set-Cookie: jar1:example=1; Path=/; Expires=Sun, 04 Jan 2026 19:42:30 GMT Set-Cookie: jar2:example=2; Path=/; Expires=Sun, 04 Jan 2026 19:42:30 GMT

Um exemplo básico para definir 3 cookies em um mesmo jarro:

use Inphinit\Experimental\Http\CookieJar; $jar = new CookieJar('sample'); // Define os valores para cada cookie usando o método mágico `__get()` (os valores são convertidos em strings). $jar->foo = 1; $jar->bar = 2.5; $jar->baz = 'text'; $jar->setExpires('+1 week'); $jar->setHttpOnly(true); $jar->setPartitioned(true); $jar->send();

Ao usar o método send, cabeçalhos como este serão enviados na resposta:

Set-Cookie: sample:foo=1; Path=/; HttpOnly; Partitioned; Secure; Expires=Sun, 04 Jan 2026 19:42:30 GMT Set-Cookie: sample:bar=2.5; Path=/; HttpOnly; Partitioned; Secure; Expires=Sun, 04 Jan 2026 19:42:30 GMT Set-Cookie: sample:baz=text; Path=/; HttpOnly; Partitioned; Secure; Expires=Sun, 04 Jan 2026 19:42:30 GMT

Obtendo valores dos cookies:

O método send() só é necessário no momento de definir ou atualizar um cookie, para obter o valor em requisições posteriores basta instanciar e usar as propriedades mágicas:

use Inphinit\Experimental\Http\CookieJar; $jar1 = new CookieJar('jar1'); var_dump($jar1->example); $jar2 = new CookieJar('jar2'); var_dump($jar2->example);

Deletando cookies:

No exemplo a seguir os cookies foo (no jarro estará como sample:foo) e bar (no jarro estará como sample:bar) serão removidos, enquanto foo será criado ou terá o valor atualizado para 3:

use Inphinit\Experimental\Http\CookieJar; $jar = new CookieJar('sample'); $jar->foo = null; $jar->bar = null; $jar->baz = '3'; $jar->send();

Ao usar o método send(), cabeçalhos como este serão enviados na resposta:

Set-Cookie: sample:foo=_; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0 Set-Cookie: sample:bar=_; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Max-Age=0 Set-Cookie: sample:baz=3; Path=/; Expires=Sun, 04 Jan 2026 19:45:48 GMT

API

Uso Descrição
setDomain($domain) Define o host para o qual o cookie será enviado. Observação: ao contrário das especificações anteriores, os pontos iniciais nos nomes de domínio (.example.com) são ignorados.
setExpires(string $datetime) Indica a duração máxima dos cookies. Nota: Aceita descrições de data e hora em inglês (por exemplo, '+1 day', 'last Monday').
setHttpOnly(bool $enable) Impede que o JavaScript acesse o cookie, por exemplo, através da propriedade document.cookie.
setPartitioned(bool $enable) Indica que o cookie deve ser armazenado usando armazenamento particionado. Observe que, se esta opção estiver definida, a diretiva Secure também será ativada automaticamente quando send() for executado.
setPath(string $path) Indica o caminho que deve existir no URL solicitado para que o navegador envie o cabeçalho Cookie.
setSameSite(int $mode) Controla se um cookie é enviado ou não com solicitações entre sites diferentes.
setSecure(bool $enable) Indica que o cookie é enviado ao servidor apenas quando uma solicitação é feita com o esquema https (exceto em localhost) e, portanto, é mais resistente a ataques do tipo man-in-the-middle.

Constantes

As seguintes constantes devem ser usadas com o método setSameSite():

Uso Descrição
SAME_LAX Enviar cookies apenas para solicitações originadas do mesmo site que definiu o cookie e para solicitações entre sites que atendam aos dois critérios a seguir.
  • Isso excluiria, por exemplo, solicitações feitas usando a API fetch ou solicitações de sub-recursos de elementos <img> ou <script>, ou navegações dentro de elementos <iframe>.
  • Isso incluiria solicitações feitas quando o usuário clica em um link no contexto de navegação de nível superior de um site para outro, ou uma atribuição a document.location, ou um envio de <form>.
SAME_NONE Envie o cookie tanto para solicitações "entre sites" quanto para solicitações "no mesmo site".
SAME_STRICT Enviar cookies somente para solicitações originadas do mesmo site que definiu o cookie.

Examplo:

use Inphinit\Experimental\Http\CookieJar; $jar = new CookieJar('sample'); ... $jar->setSameSite(CookieJar::SAME_STRICT); $jar->send();