La struttura di CakePHP
CakePHP possiede le classi per Controller, Model e View, ma possiede pure classi aggiuntive ed oggetti che rendono lo sviluppo MVC un po' più veloce e piacevole. Component, Behavior ed Helper sono classi che forniscono estensibilità e riusabilità per aggiungere velocemente funzionalità alle classi MVC di base della tua applicazione. Per adesso rimarremo ad un livello più elevato, ma vedremo meglio questi dettagli ed il modo di utilizzarli in seguito.
Estensioni dei Controller
Un Component è una classe che aiuta nella logica del controller. Se avete un qualche codice e volete condividerlo tra più controller (o applicazioni), un componente è solitamente un buon posto dove porlo. Come esempio la classe core EmailComponent rende la creazione e l'invio delle mail facile. Piuttosto che scrivere un metodo del controller per ogni singolo controllo che esegue la stessa logica, potete impacchettarlo in un componente che può essere condiviso.
I Controller sono anche forniti di metodi di callback. Queste callback sono disponibili per il vostro uso nel caso vogliate inserire del codice tra le operazioni eseguite dal core di CakePHP.
- beforeFilter(), viene eseguito prima di ogni altra azione del controllerc
- beforeRender(), viene eseguito dopo il codice del controller ma prima che la vista venga chiamata
- afterFilter(), viene eseguito dopo che tutta la logica del controller è stata eseguita, inclusa, la renderizzazione della vista. Non vi dovrebbero essere, quindi, differenze tra il metodo afterRender() ed afterFilter() a meno che voi non abbiate richiamato manualmente il metodo render() del vostro controller ed avete incluso una qualche logica aggiuntiva dopo questa chiamata.
Estensioni delle View
Un Helper è una classe che fornisce un aiuto nella scrittura della logica di una vista. Così come un componente è utilizzato per più controller, allo stesso modo gli Helper sono delle parti di logica di presentazione che possono essere acceduti e condivisi tra più View. Uno degli helper del core AjaxHelper, rende la gestione delle richieste Ajax nelle viste molto più semplice.
La maggior parte delle View hanno pezzi di codice che sono utilizzati in maniera ripetuta. CakePHP facilita il riuso di questo codice attraverso i layout e gli element. Per default ogni View che viene renderizzata da un controller è inserita all'interno di un layout. Gli Element sono utilizzati, invece, quando degli snippet leggeri di contenuto vengono usati per più View.
Estensioni dei Model
Allo stesso modo i Behavior lavorano in maniera simile per apportare le proprie funzionalità a differenti modelli. Per esempio, se voi inserite dei dati utente in una struttura ad albero, potreste specificare che il vostro modello User ha un comportamento come un albero ed ottenere, gratis, le funzionalità per rimuovere, aggiungere e spostare i nodi della vostra struttura ad albero sottostante.
I modelli sono supportati anche da un'altra classe denominata DataSource. I DataSource sono un'astrazione che abilita i modelli a manipolare differenti tipi di dati in maniera consistente. Mentre la maggior parte dei dati in CakePHP proviene spesso da un database, si potrebbero scrivere dei DataSource aggiuntivi che forniscano ai modelli il modo per rappresentare feed RSS, file CVS, entità LDAP o eventi iCal. I DataSource vi permettono di associare record tra sorgenti differenti. Piuttosto che essere limitati ad un join SQL, i DataSource vi danno la possibilità di dire al vostro modello LDAP che è associato a vari eventi iCal.
Così come i Controller. i modelli sono costruiti con metodi di callback come segue:
- beforeFind()
- afterFind()
- beforeValidate()
- beforeSave()
- afterSave()
- beforeDelete()
- afterDelete()
I nomi di questi metodi dovrebbero essere abbastanza descrittivi da permettervi di conoscere quello che fanno. Assicuratevi di comprenderne i dettagli nel capitolo sui modelli.
Estenzione delle Applicationi
Sia i controller, gli helper che i modelli, hanno una classe genitore che potete utilizzare per definire dei cambiamenti per tutta l'applicazione. AppController (che è situata a /app/app_controller.php), AppHelper (che trovate su /app/app_helper.php) e AppModel (in /app/app_model.php), questi sono degli ottimi posti per aggiungere quei metodi che volete condividere tra tutti i controller, gli helper od i modelli della vostra applicazione.
Pure se essi non sono una classe o un file, anche le Route giocano un ruolo nelle richieste fatte da CakePHP. Le definizioni delle Route dicono a CakePHP come mappare nelle URL le azioni dei controller. Il comportamento di default assume che alla URL “/controller/action/var1/var2” corrisponda Controller::action($var1, $var2), ma potete usare Route per customizzare le URL in maniera differente e come esse vengano interpretate dalla vostra applicazione
Qualche funzione complessa di una applicazione merita di essere posta in un apposito package. Un plugin è appunto un package di modelli, controlli e viste che svolge uno specifico compito e che può essere utilizzato in molteplici applicazioni. Un sistema di gestione degli utenti o un blog semplificato possono essere buoni esempi di plugin per CakePHP

login to add a comment