Design Pattern Singleton PHP

I design pattern per i programmatori alle prime armi sono dei concetti un po’ esotici. Però è opportuno entrarci in confidenza perché ci aiutano a velocizzare lo sviluppo dandoci degli schemi ben specifici e soluzioni precise a domande frequenti.

Il design pattern singleton php è un concetto molto utile nella programmazione web. Infatti ti permette di avere un’unica istanza dell’oggetto disponibile in tutta l’applicazione e tutto questo senza ricorrere a variabili globali e giochetti strani. Inoltre ci permette di creare l’istanza della classe solo nel momento in cui essa ci serve, risparmiando overhead inutili.

Il design pattern singleton php è veramente molto semplice e si realizza così:

E’ una classe contenente metodi statici e un attributo statico privato che ho chiamato “instance”. Un attributo statico è un attributo relativo non all’oggetto ma alla classe. In questo caso esisterà solo un’istanza della classe. Infatti il costruttore è dichiarato privato e può essere invocato solo da metodi statici della classe. La funzione statica getInstance ci permetterà di creare alla prima chiamata l’oggetto della classe, e di riottenerlo in qualsiasi parte all’interno del codice.

Ma che utilità può avere? Vediamo un esempio: la classe Database. Tutti prima o poi ci siamo scritti un wrapper al db, e il problema iniziale era che dovevamo istanziarlo in qualche inclusione iniziale dello script e poi renderlo globale o portarcelo dietro come parametro di metodi o funzioni. Inoltre un errore comune era quello di fare la funzione ‘query’ che si connetteva anche al db, per fare una sola chiamata,  col rischio di rifare una connessione al db per ogni query. Insomma il wrapper db è critico sotto diversi aspetti. Il design pattern singleton ci può aiutare!

MysqliSingleton è una classe derivata dalla classe mysqli di sistema. In questo modo aggiungiamo all’oggetto istanziato da mysqli la possibilità di essere invocato in ogni parte dello script. Inoltre se nella nostra esecuzione l’oggetto non verrà mai istanziato allora non sarà nemmeno creata la connessione al DB con un chiaro miglioramento delle prestazioni.

Ricapitolando il singleton php ci permette:

  • di avere un solo oggetto per la classe
  • poter richiamare l’istanza in ogni punto dello script senza dover utilizzare costrutti di visibilità
  • allocare la memoria e inizializzare l’oggetto solo quando ne abbiamo bisogno

Un pensiero su “Design Pattern Singleton PHP

  1. Pingback: Pattern Registry PHP - Marco Tabucchi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *