Examples
These examples show the library on its own. In a larger application, the same operations usually live inside controllers, page logic functions, or small services.
Remember a preference
use GT\Cookie\CookieHandler;
$cookies = new CookieHandler($_COOKIE);
if($_SERVER["REQUEST_METHOD"] === "POST") {
$scheme = $_POST["scheme"] ?? "light";
$cookies->set(
"colourScheme",
$scheme,
new DateTime("+6 months"),
secure: true,
httponly: true,
);
}
$currentScheme = $cookies["colourScheme"] ?? "light";
The preference is available immediately from the handler after set() is called, and it will be sent back by the browser on later requests if the browser accepts the cookie.
Dismiss a message
use GT\Cookie\CookieHandler;
$cookies = new CookieHandler($_COOKIE);
if(isset($_POST["dismiss-intro"])) {
$cookies->set(
"dismissedIntro",
"1",
new DateTime("+1 year"),
secure: true,
httponly: true,
);
}
if(!$cookies->contains("dismissedIntro")) {
echo "<p>Welcome to the application.</p>";
}
This is a good use for a cookie because the value is small and does not need to be private.
Clear preference cookies
use GT\Cookie\CookieHandler;
$cookies = new CookieHandler($_COOKIE);
$cookies->clear(
"colourScheme",
"dismissedIntro",
"currency",
);
Use this for “reset preferences” features, where a small known group of cookies should be removed together.
Pass cookies into a function
use GT\Cookie\CookieHandler;
function getCurrency(CookieHandler $cookies):string {
return $cookies["currency"] ?? "GBP";
}
function rememberCurrency(CookieHandler $cookies, string $currency):void {
$cookies->set(
"currency",
$currency,
new DateTime("+1 year"),
secure: true,
httponly: true,
);
}
Passing the handler in makes the dependency clear. The function can be tested with a simple in-memory handler:
$cookies = new CookieHandler([
"currency" => "EUR",
]);
assert(getCurrency($cookies) === "EUR");
Use Cookie objects directly
use GT\Cookie\Cookie;
$cookie = new Cookie("currency", "GBP");
$updated = $cookie->withValue("EUR");
echo $cookie->getValue(); // GBP
echo $updated->getValue(); // EUR
This is useful when a function should work with one cookie value without needing the whole handler.
For the complete method list, see the API reference.