Gestire db in PHP5 (Parte IV)

Pagina 4 di 8

Il compito successivo sarà l'utilizzo del file XML preparato per la generazione delle classi che andremo ad utilizzare nella nostra applicazione. Lo stesso processo di generazione è eseguito con l'aiuto di uno strumento di nome Phing, che è un sistema di automatizzazione della costruzione di progetti con una filosofia di funzionamento simile a make ed un modello ant di Java.

Dopo aver correttamente installato l'intero ambiente di lavoro (maggior informazioni si trovano nel frame Installazione), sarà sufficiente eseguire il comando: phing -Dproject=[nome progetto] dalla cartella in cui si trova il file build.xml. In pratica vengono generati file e cartelle, le cui strutture sono mostrate nella Fig. 4. Il contenuto delle sottocartelle di nome map e om viene scritto in caso di ripetizione della generazione delle classi (ad es. dopo modifiche nella struttura del DB), quindi non vanno eseguite modifiche manuali. Queste cartelle assolvono alle seguenti funzioni :

map (dall'ingl. mapping) conserva le classi contenenti la descrizione della struttura del DB, il modello degli oggetti ed i loro reciproci collegamenti.

Costituiscono le rappresentazioni delle informazioni contenute nel file XML, ma in forma di classi PHP. Grazie a questo, l'uscita di tutte le meta-informazioni necessarie durante il fun-zionamento dell'applicazione sono dis-ponibili immediatamente, senza dover eseguire il parser del file XML. Per ognuna delle tabelle trascritte nel file XML viene generata una classe di nome [NomeTabella]MapBuilder.php. Per quanto eseguire modifiche manuali in questi file non sia proibito, possiamo utilizzare, per queste operazioni,le classi generate per ottenere informazioni sulle strutture delle tabelle, ad es. le liste di colonne

om (dall'inglese. object mapping)è la cartella contenente le classi responsabili dell'utilizzo degli oggetti nell'applicazione, in particolare peril loro mapping alle istruzioni SQL. Per ogni tabella che si trova in XML, otteniamo due classi generate automaticamente: Base[NomeTabella].php e Base[NomeTabella]Peer.php. La pri-ma delle quali corrisponde ai singoli record nella tabella. La seguente Base[NomeTabella]Peer rappresenta i dati e le operazioni relativi all'intera tabella

Dopo aver parlato del contenuto della cartella om sarà facile capire cosa è presente nella cartella principale. I file di nome [NomeTabella]Peer.php e [NomeTabella].php contengono le de-finizioni della classe, che ampliano le classi della sottocartella om. I file che si trovano nella cartella principale sono stati preparati dalla costruzione – qui possiamo apportare le nostre modifiche e sviluppi; l'effetto del nostro operato non verrà scritto in caso di ripetizione della generazione del progetto. Nella Fig. 5 vediamo il diagramma UML per tutte le classi sopra citate.

Siamo già abbastanza vicini all'attivazione di un esempio simile a quello presentato nel Listing 2. Rimane solo da costruire la tabella creatrice della struttura del database e della configurazione dei parametri di collegamento. Anche nel primo compito ci aiuta Propel: abbiamo già descritto prima la struttura del DB, creatore del file XML. Propel è in grado di utilizzare le sue informazioni. Sarà sufficiente inserirgli i parametri del database (tipo e dati necessari per allacciare il collegamento) ed eseguire il comando:

phing -Dproject=[nome progetto] §

-Dtarget=insert-sql

 

In alternativa, possiamo eseguirela preparazione del file SQL manualmente (il file si trova nella cartella build/sql/schema.sql). Se utilizzeremo la direttiva Phing operante sul database, dovremo in aggiunta definire i parametri di collegamento nel file build.properties.

L'effetto del processo di generazione è una sottocartella di nome build (nella cartella del progetto, dove abbiamo collocato il file schema.xml). Essa contiene le sottocartelle: conf, classes e sql. Della cartella sql abbiamo già parlato, rimangono due classi contenenti i file generati e le configurazioni ad essi relativi. Un esempio di utilizzo è il Listing 2.

<<< Precedente  -  Continua >>>

 



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Graziano
Hai qualche domanda da fare?