Gestione dei database in PHP5 (Parte II)

Pagina 2 di 8

Propel dall'interno

Utilizzando la libreria Propel, evitiamo queste procedurefaticose e rendiamo indipendente la nostra applicazione a undatabase specifico. Diamo un'occhiata al Listing 2. Viè presentato un codice che esegue le stesseoperazioni, dello script del Listing 1. Tuttavia non vitroviamo neanche una query diretta al DB. Non effettuiamocollegamenti, né trasferiamo query al SQL. Eseguiamoinvece, semplici operazioni sugli oggetti. Il nostroprogramma è separato dal relativo databasedall'aggiunta di un Abstraction Layer il cui compitoè convertire le operazioni sugli oggetti incorrispondenti query al DB e viceversa. Tale AbstractionLayer è denominato ORM (ingl. Object RelationalMapping). Maggiori dettagli sull'ORM si trovano nelframe ORM e Propel.

Conseguentemente al suo ruolo, l'Abstraction Layer di ORMdeve possedere informazioni sul database, sul modellodell'applicazione orientato agli oggetti e su comecollegare reciprocamente questi due mondi. Propel utilizza aquesto scopo un file XML. Ricordiamo tuttavia che PHP nontrattiene nessun dato dall'esecuzione degli script.Tralasciando concetti di software engineering di difficilecomprensione diciamo semplicemente che 118-propel-generatorconverte i file XLM in classi PHP e 118-propel-runtimepermette l'attivazione delle classi generate. Nella Fig.3 è presentato schematicamente il funzionamento diPropel.

Listing 2. Servizio del form di esempio inPropel

 

<?php$old_inc_path = ini_get('include_path');ini_set('include_path',$old_inc_path.';F:/www/phpsolmag/propel/118-propel-1.0.0/runtime/classes');require_once('propel/Propel.php');Propel::init(dirname(__FILE__).'/conf/bookstore-conf.php');include_once 'bookstore/Publisher.php';include_once 'bookstore/Author.php';include_once 'bookstore/Book.php';$pub = new Publisher();$pub->setName($_POST['publisher_name']);$author = new Author();$author->setFirstName($_POST['firs_name']);$author->setLastName($_POST['last_name']);$book = new Book();$book->setTitle($_POST['title']);$book->setIsbn($_POST['isbn']);$book->setPublisher($pub);$book->setAuthor($author);$book->save();?>

 

 

Installazione

La libreria Propel richiede:

• PHP5 con supporto XSLT ed utilizzo di DB

• pacchetto PEAR::Log

• pacchetto Phing 2.0

• Abstraction Layer per DB - Creole

Il pacchetto PEAR::Log lo prendiamo scrivendo il comando pearinstall Log. Per installare Propel, possiamo utilizzarel'installatore PEAR ed installare generator e runtime:

pear installhttp://propel.phpdb.org/pear/propel_generator-current.tgz

pear installhttp://propel.phpdb.org/pear/propel_runtime-current.tgz

Possiamo anche installare Propel manualmente. Scarichiamo intal caso, l'archivio unico e scompattiamolo nellacartella che abbiamo scelto. Dopo aggiungiamo le classiPropele Creole all' include_path.

Phing richiede l'impostazione aggiuntiva delle variabiliambientali PHING_HOME e PHP_CLASSPATH. La prima delle qualiindica il luogo di installazione di Phing e la se-condadefinisce la collocazione delle classi presenti nel progettoPhing, Creole e Propel.

Le impostazioni descritte sono necessarie soltanto inambiente di programmazione. Nel progetto pronto èsufficiente definire solo include_path (classi Propel eCreole), ad es. dall'interno dello script, utilizzando ilcomando ini_set('include_path', '[Percorso alleclassi118-propel-runtime e Creole]');.

<<< Precedente -  Continua >>>