PHP: creare una classe per la storage delle sessioni

PHP: creare una classe per la storage delle sessioni

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 );

Torna su