Possiamo prendere spunto dal web storage in JavaScript per implementare una classe PHP per gestire le sessioni.
La classe potrebbe essere la seguente:
class SessionStorage {
public $id; // ID univoco
public $length; // Numero di elementi
public function __construct()
{
$this->id = md5( $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'] );
$this->length = 0;
}
public function initialize()
{ // Crea la sessione
session_start();
$_SESSION['data'] = [];
$_SESSION['id'] = $this->id;
}
public function setItem( $key, $value )
{
$_SESSION['data'][$key] = $value; // Imposta una chiave e un valore
$this->setLength(); // Aggiorna il numero di elementi
}
public function removeItem( $key )
{
unset( $_SESSION['data'][$key] ); // Rimuove una chiave
$this->setLength();
}
public function clear()
{ // Elimina la sessione e i dati
session_destroy();
$_SESSION = [];
$this->length = 0;
$this->id = '';
}
public function hasItem( $key )
{ // Verifica che una chiave sia presente
return array_key_exists( $key, $_SESSION['data'] );
}
private function setLength()
{
$this->length = count( $_SESSION['data'] );
}
}
Esempio d'uso:
$session = new SessionStorage();
$session->initialize();
$session->setItem( 'test', 1 );