di: Gabriele Farina 22 Febbraio 2007
Questo articolo fa parte di una serie dedicata alla programmazione di un framework MVC personalizzato in PHP. L'autore ha chiamato questo framework "Taste". Gli altri articoli della serie sono disponibili nella categoria Taste framework di php.html.it.
Nell'articolo precedente abbiamo iniziato a discutere dell'implementazione del sistema di configurazione del framework Taste; abbiamo anche introdotto la struttura base di funzionamento accennando ai componenti che interagiscono nella gestione di una richiesta HTTP proveniente dal webserver ed instradata al file di bootstrap. In questo articolo continueremo da dove ci eravamo fermati precedentemente, discutendo prima l'implementazione di un registro statico globale in cui registrare delle informazioni che dovranno essere accessibili da qualunque punto del nostro codice e successivamente fornendo l'implementazione delle classi per la gestione delle richieste e delle risposte HTTP che passano per il file di bootstrap.
Il framework aggiornato con le ultime modifiche è possibile scaricarlo dal link download che trovate all'inizio dell'articolo.
La classe Registry è la prima classe di supporto che andiamo ad implementare, che servirà per poterci permettere di condividere delle informazioni tra i vari oggetti senza la necessità di dover utilizzare variabili globali. La classe Registry è implementata utilizzando il pattern Singleton (che abbiamo discusso in un articolo precedente sui design patterns) ed una serie di metodi static pubblici che permettono di salvare, recuperare ed eliminare delle coppie chiave-valore. Il vantaggio dell'utilizzo di un registro globale implementate come un Singleton è dato dal fatto che si mantiene un'interfaccia ad oggetti senza dover necessariamente sacrificare la semplicità di utilizzo di un array globale e senza rischiare di intaccare altre porzioni di codice non strettamente legate al framework che potrebbero fare uso di array omonimi.
Il file sorgente (che potete trovare in taste/utils/Registry.php) fornisce un'implementazione molto semplice di registro:
getInstance tipico del Singleton, che solamente viene reso pubblico, è invece privato in modo da forzare l'utilizzo degli altri metodi statici per lavorare sul registro;$cache e quindi nel caso in cui venga assegnato un valore ad una chiave già presente nel registro, questo sovrascrive quello precedente;has e set lavorano sulla cache interna come farebbero rispettivamente il metodo isset e l'operatore di assegnamento;get ed il metodo del restituiscono entrambi un'eccezione RegistryException nel caso in cui la chiave specificata come primo parametro non esista all'interno del registro. È possibile comunque specificare come secondo parametro opzionale un valore di default per il metodo get in modo che l'eccezione non venga generata.Con questa implementazione quindi sarà possibile interrogare il registro globalmente senza la necessità di ottenere delle istanze o fare riferimento a variabili globali:
<?php
require_once 'taste/utils/registry.php';
function test_set()
{
Registry::set('chiave', 'valore');
}
function test_get()
{
// Stampa: valore
echo Registry::get('chiave');
}
test_set();
test_get();
?>
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Zend FrameworkDiventate professionisti dello sviluppo Web. Zend Framework è lo... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso PHP per Webmaster11 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |