Una classe per gestire le sessioni in PHP

Eccomi qui dopo tanto tempo a riscrivere un articolo. Oggi condividerò con voi una classe scritta da me in PHP per utilizzare le sessioni in un modo più pulito. Non è una cosa indispensabile, ma penso che sia utile per scrivere del buon codice, soprattutto se si programma ad oggetti.

Tutti i metodi di questa classe saranno metodi statici. Probabilmente molti di voi sapranno già cosa sono i metodi statici, ma lo spiego lo stesso per i meno esperti. I metodi statici sono dei metodi che, diversamente dai metodi di istanza, non si riferiscono al singolo oggetto ma alla classe in generale. Ok, che ca**o significa? In poche parole se avete un metodo di istanza, dovete prima istanziare l’oggetto a partire dalla classe, mentre se avete un metodo statico non c’è bisogno di istanziare l’oggetto.

Nel nostro caso quindi, dato che la sessione è sempre una, evitiamo di istanziare un oggetto e utilizziamo dei metodi statici. Ma andiamo al dunque:

Prima di tutto, creiamo il metodo isStarted che ci permetterà di capire se la sessione è già stata inizializzata. Non penso ci sia molto da spiegare: torna true se è inizializzata, false altrimenti.

Passiamo adesso a qualcosa di più interessante: i metodi get e set.


 

Il metodo set prende come parametri key e value. Ovviamente se la sessione non è inizializzata non viene settato niente, ma vediamo come si usa. Ipotizziamo di dover settare una variabile username di sessione con un determinato valore. Scriveremo quindi:

Session::set(‘username’,‘pippo’);

Il metodo get invece prende come parametro solo key. Quindi se dobbiamo stampare la variabile di sessione username settata prima ci basterà scrivere:

Ok, ma come facciamo a inizializzare la sessione? Col metodo startSession. Vediamolo:

Semplicissimo, no? Se la sessione non è inizializzata utilizziamo la funzionesession_start di PHP. Possiamo anche migliorarla un po’, passandogli come parametro un array con i dati da salvare in sessione dopo averla inizializzata:

Esempio:

Ci ritroveremo quindi in sessione le variabili username e id contenenti rispettivamente “claudio” e “1″

In fine, non può mancare il metodo per distruggere la sessione: destroySession.

Anche per questo metodo non penso che ci sia nulla da spiegare. Vediamo in fine come sarà la nostra classe Session:

Spero di essere stato chiaro e che l’articolo sia stato utile! Se volete modificare la classe o riutilizzarla la trovate su GitHub al seguente URL: https://github.com/ClaudioLaBarbera/Session