Rozbudowa helpera do obsługi sesji – dodanie flash-messages do naszej klasy. Do dzieła.
Najpierw ustawianie flash-message, bo to proste:
<?php
class Session
{
//(...)
public static function setFlashMessage($key, $message)
{
self::set('flash_' . $key, $message);
}
}
Teraz otrzymywanie flasha:
<?php
class Session
{
//(...)
public static function getFlashMessage($key, $default = null)
{
$message = self::get('flash_' . $key, $default);
self::clear('flash_' . $key);
return $message;
}
}
Niby fajnie, flash ginie w momencie odczytania – no właśnie, odczytania. My natomiast możemy chcieć, aby to były wiadomości tylko dla następnego żądania. Aby istniały w następnym requeście, ale w jeszcze następnym już ich nie było, niezależnie czy ktoś je próbował odczytywać, czy nie.
Budowa Request i Response dla naszego frameworka MVC, to coś, co koniecznie zrobimy, na tym jednak etapie po prostu utworzymy metodę usuwającą flashe:
<?php
class Session
{
//(...)
public static function clearFlashMessages(){
foreach ($_SESSION as $key => $value){
if(str_starts_with($key, "flash_")){
static::clear($key);
}
}
}
}
Teraz możemy w dowolnym miejscu usunąć flashe, nawet jeżeli ich nie odczytaliśmy.