Gestione dei database in PHP5 (Parte II)

Pagina 2 di 8

Propel dall'interno

Utilizzando la libreria Propel, evitiamo queste procedure faticose e rendiamo indipendente la nostra applicazione a un database specifico. Diamo un'occhiata al Listing 2. Vi è presentato un codice che esegue le stesse operazioni, dello script del Listing 1. Tuttavia non vi troviamo neanche una query diretta al DB. Non effettuiamo collegamenti, né trasferiamo query al SQL. Eseguiamo invece, semplici operazioni sugli oggetti. Il nostro programma è separato dal relativo database dall'aggiunta di un Abstraction Layer il cui compito è convertire le operazioni sugli oggetti in corrispondenti query al DB e viceversa. Tale Abstraction Layer è denominato ORM (ingl. Object Relational Mapping). Maggiori dettagli sull'ORM si trovano nel frame ORM e Propel.

Conseguentemente al suo ruolo, l'Abstraction Layer di ORM deve possedere informazioni sul database, sul modello dell'applicazione orientato agli oggetti e su come collegare reciprocamente questi due mondi. Propel utilizza a questo scopo un file XML. Ricordiamo tuttavia che PHP non trattiene nessun dato dall'esecuzione degli script. Tralasciando concetti di software engineering di difficile comprensione diciamo semplicemente che 118-propel-generator converte i file XLM in classi PHP e 118-propel-runtime permette l'attivazione delle classi generate. Nella Fig. 3 è presentato schematicamente il funzionamento di Propel.

Listing 2. Servizio del form di esempio in Propel

 

<?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 pear install Log. Per installare Propel, possiamo utilizzare l'installatore PEAR ed installare generator e runtime:

pear install http://propel.phpdb.org/pear/propel_generator-current.tgz

pear install http://propel.phpdb.org/pear/propel_runtime-current.tgz

Possiamo anche installare Propel manualmente. Scarichiamo in tal caso, l'archivio unico e scompattiamolo nella cartella che abbiamo scelto. Dopo aggiungiamo le classi Propele Creole all' include_path.

Phing richiede l'impostazione aggiuntiva delle variabili ambientali PHING_HOME e PHP_CLASSPATH. La prima delle quali indica il luogo di installazione di Phing e la se-conda definisce la collocazione delle classi presenti nel progetto Phing, Creole e Propel.

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

<<< Precedente  -  Continua >>>

 



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Sara
Hai dubbi su questo articolo?