Integrare Doctrine e CodeIgniter

In questa breve guida, vedremo come integrare l’ORM Doctrine con il framework php CodeIgniter. L’uso di un ORM in CodeIgniter, permette di ottenere tutti i vantaggi derivanti dall’uso di un’astrazione ad oggetti del db; l’ORM Doctrine, in particolare, propone seppur con alcune differenze un «ambiente» simile a quello del famoso Hibernate, soprattutto per ciò che riguarda il linguaggio di interrogazione.
Esiste già un tutorial in inglese per l’integrazione tra CodeIgniter e Doctrine, questa mia breve guida però, oltre ad essere localizzata in italiano, è aggiornata alla versione 1.7 di CodeIgniter e alla 1.1.0 di Doctrine.

ciplusd
Foto: gaspi (rielaborazione)

Per prima cosa copiamo la directory di Doctrine (quella che contiene il file Doctrine.php e la sottodirectory «doctrine») nella struttura del nostro progetto CodeIgniter. Nella fattispecie, inseriremo questi due file in una directory «doctrine» in

/<dir progetto>/<dir applicazione>/database/doctrine

Ora andremo ad impostare Doctrine nel file di configurazione database.php di CodeIgniter, dove usualmente si imposta il db per l’applicazione. Le righe da aggiungere sono quelle tipiche di una connessione Doctrine:

/* //// DOCTRINE BOOTSTRAP //// */
require_once(realpath(dirname(__FILE__) . '/../..') . '/database/doctrine/Doctrine.php');
spl_autoload_register(array('Doctrine', 'autoload'));
$manager = Doctrine_Manager::getInstance();
$conn = Doctrine_Manager::connection('mysql://username:password@host/database_name');
$conn->setCharset('utf8');
Doctrine::loadModels(realpath(dirname(__FILE__) . '/..') . '/models/doctrine_classes/');

Nell’esempio viene effettuata una connessione ad una base dati sul dbms MySQL, e si presta particolare attenzione al fatto che il set di caratteri impostato sia «utf8» (come la lettura del manuale di Doctrine insegna, infatti, per l’uso di utf8 con MySQL non basta specificare charset e collation nelle classi che definiscono la nostra base dati).

Nel codice sopra, inoltre, e precisamente nell’ultima riga, abbiamo specificato il luogo in cui Doctrine può trovare le classi del modello della base dati.

È ora possibile accedere direttamente alle classi ed ai metodi di Doctrine nei modelli dell’applicazione CodeIgniter. Può essere utile creare degli script php per la gesitone del dbms, inserendoli nei path di CodeIgniter. Ad esempio si potrebbe voler creare uno script che effettui la mappatura delle classi di Doctrine o dei file yaml sul db.

Articoli simili:

giovedì 16 apr 2009, ore 20.49
Tag:, , , , ,

lascia un commento