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.