Gestire db in PHP5 (Parte IV)

Pagina 4 di 8

Il compito successivo sarà l'utilizzo del file XMLpreparato per la generazione delle classi che andremo adutilizzare nella nostra applicazione. Lo stesso processo digenerazione è eseguito con l'aiuto di unostrumento di nome Phing, che è un sistema diautomatizzazione della costruzione di progetti con unafilosofia di funzionamento simile a make ed un modello ant diJava.

Dopo aver correttamente installato l'intero ambiente dilavoro (maggior informazioni si trovano nel frameInstallazione), sarà sufficiente eseguire ilcomando: phing -Dproject=[nome progetto] dalla cartella incui si trova il file build.xml. In pratica vengonogenerati file e cartelle, le cui strutture sono mostratenella Fig. 4. Il contenuto delle sottocartelle di nomemap e om viene scritto in caso di ripetizionedella generazione delle classi (ad es. dopo modifiche nellastruttura del DB), quindi non vanno eseguite modifichemanuali. Queste cartelle assolvono alle seguenti funzioni :

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

Costituiscono le rappresentazioni delle informazionicontenute nel file XML, ma in forma di classi PHP. Grazie aquesto, l'uscita di tutte le meta-informazioni necessariedurante il fun-zionamento dell'applicazione sonodis-ponibili immediatamente, senza dover eseguire il parserdel file XML. Per ognuna delle tabelle trascritte nel fileXML viene generata una classe di nome[NomeTabella]MapBuilder.php. Per quanto eseguiremodifiche manuali in questi file non sia proibito, possiamoutilizzare, per queste operazioni,le classi generate perottenere informazioni sulle strutture delle tabelle, ad es.le liste di colonne

om (dall'inglese. objectmapping)è la cartella contenente le classiresponsabili dell'utilizzo degli oggettinell'applicazione, in particolare peril loro mapping alleistruzioni SQL. Per ogni tabella che si trova in XML,otteniamo due classi generate automaticamente:Base[NomeTabella].php eBase[NomeTabella]Peer.php. La pri-ma delle qualicorrisponde ai singoli record nella tabella. La seguenteBase[NomeTabella]Peer rappresenta i dati e le operazionirelativi all'intera tabella

Dopo aver parlato del contenuto della cartella omsarà facile capire cosa è presente nellacartella principale. I file di nome[NomeTabella]Peer.php e [NomeTabella].phpcontengono le de-finizioni della classe, che ampliano leclassi della sottocartella om. I file che si trovanonella cartella principale sono stati preparati dallacostruzione – qui possiamo apportare le nostremodifiche e sviluppi; l'effetto del nostro operato nonverrà scritto in caso di ripetizione della generazionedel progetto. Nella Fig. 5 vediamo il diagramma UML per tuttele classi sopra citate.

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

phing -Dproject=[nome progetto] §

-Dtarget=insert-sql

 

In alternativa, possiamo eseguirela preparazione del file SQLmanualmente (il file si trova nella cartellabuild/sql/schema.sql). Se utilizzeremo la direttivaPhing operante sul database, dovremo in aggiunta definire iparametri di collegamento nel file build.properties.

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

<<< Precedente -  Continua >>>

 



Ti potrebbe interessare anche

commenta la notizia