Le classi di base vengono generate automaticamente ogni volta che si lancia il comando
symfony propel:build-model
Symfony crea in maniera automatica tutte le classi necessarie per mappare la base dati e quindi, seppur contengano gli elementi essenziali per l'astrazione delle tabelle del database, non possono essere personalizzate in quanto si perderebbero tutte le modifiche introdotte quando, per qualsiasi motivo, siamo costretti a rigenerare il model (ad esempio per l'aggiunta di una colonna di una tabella).
La tabella seguente riporta tutte le classi generate per l'esempio preso in considerazione nella lezione precedente.
Tipo di Classe | Nome | Directory |
---|---|---|
Classe di base | BaseTipoLibro.php BaseTipoLibroPeer.php BaseLibro.php BaseLibroPeer.php |
libmodelom |
Classi dati personalizzabili | TipoLibro.php TipoLibroPeer.php Libro.php LibroPeer.php |
libmodel |
Le classi dati personalizzabili, che ereditano dalle classi di dati, servono proprio per aggiungere elementi caratteristici dell'applicazione che stiamo realizzando e che non possono essere generati automaticamente da Symfony. Queste classi non vengono rigenerate quando si lancia il comando per costruire il model e dunque tutte le personalizzazioni non vengono perse.
Classi Peer
Alcune classi sono differenti e si chiamano classi peer. Le classi "normali" contengono dei metodi per lavorare sulle singole colonne delle tabelle. Ad esempio, per avere il titolo dei libri possiamo scrivere il codice riportato nel Listato 13.
Listato 13: Recupero del titolo di un libro utilizzando i metodi della classe Libro.php
$libro = new Libro();
$titolo = $libro->getTitolo();
Le classi peer invece contengono metodi statici attraverso i quali è possibile accedere alle tabelle del database. Ad esempio possiamo ottenere un determinato libro a partire dal valore della sua primary key scrivendo il codice riportato nel listato 14.
Listato 14: Recupero di un libro utilizzando i metodi della classe LibroPeer.php
$libri = LibroPeer::retrieveByPK(1);
Le classi dati generate da Symfony in maniera automatica consentono di effettuare le operazioni più comuni sul database quali l'inserimento, il recupero, la modifica e l'eliminazione dei dati specificando anche eventuali condizioni. I metodi da utilizzare per ogni tipo di operazione sono facilmente individuabili all'interno delle classi stesse e, comunque, hanno dei nomi piuttosto espliciti per cui non ci soffermeremo su questo argomento rimandando il lettore alla guida ufficiale di Symfony qualora ne avesse bisogno.