|
Nel precedente articolo è abbiamo visto a grandi linee cosa è PEAR e cosa permette di fare con il PHP. Probabilmente dall'introduzione non si comprende immediatamente la potenzialità di PEAR, o le sue possibilità applicative, ed è necessario passare all'azione per avere un reale riscontro degli orizzonti che PEAR apre. Nel primo di una serie di articoli andremo a descrivere come utilizzare PEAR per realizzare un framework, ovvero una scatola vuota, di una applicazione web di medie dimensioni. Il primo di questa serie di articoli è solamente di tipo descrittivo. In questo articolo c'è poco codice PHP perché si descrive la struttura dell'applicazione che andremo a realizzare.
Obiettivi Prima di passare al codice PHP spendiamo due parole per descrivere l'obiettivo di questa serie di articoli. Il taglio di questo e dei seguenti testi è di tipo puramente didattico, per cui verranno descritte e analizzate situazioni e problemi con un'ottica non finalizzata alla realizzazione di una applicazione reale, ma basterà poco per passare dall'applicazione didattica ad una realmente utilizzabile. L'obiettivo è quello di comprendere la natura e le dinamiche delle problematiche che saranno affrontate e proporre una ipotesi base di soluzione che potrà poi essere espansa e adattata ad una situazione specifica. Tipo di applicazione Come già descritto nell'introduzione questa serie di articoli guiderà nella realizzazione di un framework, ovvero di un template di pagina PHP utilizzabile per una applicazione di medio livello. Ovviamente medio livello è un termine generico, ma con questa terminologia, in questa serie di articoli si intende una applicazione che ha accesso ad un database, che permette l'autenticazione di utenti e della quale si può facilmente modificare l'aspetto grafico tramite dei template. Quanto andremo a descrivere in questi articoli potrà essere utile sia per la realizzazione di un piccolo sito web personale, sia per un sito web di maggiori dimensioni, sia per una applicazione gestionale scritta in PHP. Perché costruire un template di applicazione?
La realizzazione di un template ha un enorme vantaggio: per chi realizza applicazioni PHP con una certa frequenza, avere a disposizione un format vuoto di pagina che può essere modificato o facilmente esteso costituisce un vantaggio non indifferente, dal momento che permette di recuperare tempo nei processi di sviluppo riciclando parte dei progetti precedenti. Descrizione del template Il template di pagina che andremo a realizzare dovrà assolvere ai seguenti compiti: - inizializzare l'ambiente dell'applicazione caricando un insieme di variabili in grado di configurarne il comportamento;
- effettuare una connessione al database e renderla disponibile per l'uso;
- effettuare l'autenticazione di un utente (se necessario);
- se l'autenticazione è necessaria l'applicazione dovrà mostrare il contenuto solo agli utenti autenticati e il form di autenticazione per tutti gli altri;
- caricare un template grafico;
Tematiche in discussione Gli elementi in discussione in questa serie di articoli saranno quindi i seguenti: - accesso ai database;
- gestione dell'autenticazione di utenti;
- gestione di template.
Questi aspetti saranno per prima cosa analizzati da un punto di vista concettuale e poi dal punti di vista del codice PHP. Il primo passo è necessariamente l'installazione di PEAR sul proprio server web, successivamente sarà necessario installare i singoli package che andremo ad utilizzare. Circa l'installazione di PEAR, se l'applicazione dovrà essere inserita in un server che non ha il supporto a PEAR incluso nell'interprete PHP, allora è più conveniente effettuare una installazione locale. Package necessari I package che andremo ad utilizzare saranno: - Auth: per l'autenticazione degli utenti;
- MDB2: per l'accesso al database (con i driver necessari);
- HTML_Template_IT: per la gestione dei template grafici della pagina web.
Accesso ai database L'accesso ad un database è un requisito essenziale per una applicazione web come quella descritta in questo articolo. Oggi la maggior parte delle applicazioni web dispone di un database e molto spesso le pagine web altro non sono che interfacce di accesso a dati memorizzati all'interno dei database. L'accesso al database è il primo requisito di una applicazione di questo tipo per due motivi: - molto spesso una applicazione di queste dimensioni si basa sui dati per produrre i propri risultati e un metodo conveniente e razionale di organizzare dei dati è un database;
- l'autenticazione utenti spesso viene effettuata utilizzando un database nel quale vengono memorizzate le credenziali di autenticazione di un utente.
MDB2 è una delle tante classi che PEAR mette a disposizione per l'accesso ai database ma la scelta ricade su questa per un motivo molto importante:uno degli obiettivi di MDB2 è quello di assicurare la portabilità delle applicazioni. Questo è possibile dal momento che MDB2 non permette l'accesso diretto ad un database, ma utilizza una serie di driver per l'accesso ai database più diffusi: - Mssql
- Sqlite
- Querysim
- Pgsql
- Oci8
- Mysqli
- Mysql
- Ibase
- Fsql
Utilizzando questa classe sarà quindi possibile realizzare una più semplice portabilità della propria applicazione su altri database. Ad esempio, per migrare la propria applicazione da Mysql a Pgsql sarà sufficiente: - installare i driver per Pgsql
- modificare la configurazione dell'accesso al database dell'applicazione cambiando il driver
Non sarà necessario fare ulteriori modifiche al codice sorgente: un vantaggio di tutto rispetto. Oltre a questo vantaggio in PEAR esistono molte altre classi o oggetti che utilizzano MDB2, che consentono di realizzare un rapido accesso ai dati, senza il bisogno di dover scriver troppo codice PHP. Autenticazione utenti L'autenticazione degli utenti permette di rendere privata una porzione di un sito web, garantendone l'accesso solo ad utenti in possesso di un valido account (nome utente e password). Solitamente l'accesso ad una porzione riservata di un sito web avviene tramite un form che consente all'utente di specificare le proprie credenziali. L'accesso diretto ad una pagina che richiede autenticazione da parte di un utente non in possesso delle giuste credenziali deve essere naturalmente bloccato e deve produrre un messaggio di errore. Nell'applicazione che andremo a definire l'autenticazione può essere di due tipi: obbligatoria o opzionale. Tutte le pagine che richiedono un valido account per essere visualizzate devono automaticamente mostrare un form di autenticazione in modo da: - informare l'utente che quella porzione di sito web è accessibile solo ed esclusivamente agli utenti registrati;
- permettere agli utenti in possesso di un valido account di fornire le proprie credenziali di accesso.
Per questo scopo sarà utilizzato il package Auth di PEAR perché soddisfa tutti i requisiti precedentemente descritti e perché si integra perfettamente con MDB2, rendendo di fatto immediata l'autenticazione di un utente le cui credenziali sono memorizzate in un database. Visti i pregi di MDB2, questo renderà l'applicazione facilmente portabile da un RDBM ad un altro. Gestione dei template La possibilità di cambiare l'aspetto estetico di una applicazione web è un vantaggio enorme. I siti web devono evolvere sia nei contenuti che nella forma per poter risultare sempre appetibili al pubblico della rete. Il cambiamento del layout grafico è quindi uno step che si incontra più volte nel ciclo di vita di un sito o di una applicazione web. Cambiare il layout grafico in poco tempo può essere un problema se il codice sorgente PHP è immerso nel codice HTML di interfaccia. Sostituire la grafica in una applicazione di questo genere è una operazione complessa anche per un sito web di piccole dimensioni. Per gestire correttamente questo aspetto è necessario separare il codice applicativo (PHP) dall'interfaccia (HTML), e per farlo utilizzeremo la classe HTML_Template_IT. Questa classe permette di associare ad una pagina PHP un template e di cambiarlo facilmente. All'interno del template saranno definite delle variabili e a queste variabili saranno poi assegnati dei valori da parte del codice PHP. Al momento del caricamento del template, le variabili valorizzate saranno fuse con il template in modo da realizzare la pagina definitiva. Configurazione dell'applicazione Se l'obiettivo è la portabilità, l'utilizzo degli accorgimenti sinora descritti non è sufficiente. Anche se MDB2 consente di ottenere la portabilità a livello di database, ci sono comunque degli aspetti che vanno presi in considerazione. Passando da un ambiente ad un altro cambieranno i dati per l'accesso al database o altri aspetti quali ad esempio i parametri per la configurazione dell'autenticazione degli utenti. Tutti questi aspetti possono essere comodamente gestiti tramite uno o più file di configurazione. Per comodità e semplicità è sempre meglio non esagerare con il numero di file di configurazione (uno solo sarebbe l'ideale). Questo perché, nel momento in cui si va a portare la propria applicazione dal server di sviluppo al server di produzione (ad esempio), è sicuramente più comodo apportare le modifiche su un solo file piuttosto che su 10. Conclusione e prossimo appuntamento Finisce qui il primo appuntamento con la realizzazione di applicazioni PHP con PEAR. Nel prossimo appuntamento cominceremo a vedere come iniziare a realizzare l'applicazione descritta, affrontando le problematiche della configurazione e dell'accesso ai database tramite MDB2. Nei successivi appuntamenti si parlerà di autenticazione utenti e di template. Dalla prossima puntata cominceremo a parlare di codice PHP. Per quanto riguarda l'ambiente di sviluppo non esistono né limitazioni, né vincoli di alcun genere, per cui chiunque potrà utilizzare il proprio ambiente preferito. Come sempre, ogni commento è ben accetto. |