Questo articolo fa parte di una serie dedicata alla comparazione di Framework PHP.
Il nome un po’ "giocoso" di questo framework (Cake significa 'torta') non deve trarre in inganno. CakePHP si presenta come un framework dalle molteplici potenzialità. In esso sono incluse tutte le funzionalità incontrate nei framework analizzati in questo articolo. Dal pattern MVC, all’Active record, senza dimenticare validazione e altre utility. La versione analizzata e utilizzata nell’articolo è la versione 2.05 che, nel momento in cui scrivo, è l’ultima release stabile. Questa versione supporta Php a partire dalla versione 5.2.6 o successive e MySQL a partire dalla versione 4.
Installazione
L’installazione del framework è abbastanza semplice e intuitiva. È sufficiente infatti caricare in una cartella del server i file che abbiamo scaricato. All’interno della cartella dovremmo quindi trovare una cartella app che è quella che effettivamente contiene la nostra web application o il sito web. Ci sono diversi file di configurazione che ci consentono con pochi passaggi di configurare in modo semplice e rapido la nostra applicazione.
Pattern MVC
Come è facile immaginare CakePHP implementa il pattern MVC. Infatti sotto la cartella app è possibile individuare le tre sottocartelle dedicate allo scopo. Utilizzando le convenzioni dei nomi consigliate dal framework, l’utilizzo del MVC diviene estremamente semplice.
Il controller all’interno di CakePHP è una classe che estende AppController. All’interno di esso vengono definite le varie azioni semplicemente definendo metodi che abbiano il nome dell’azione desiderata. La cosa interessante è che, seguendo appunto le indicazioni sulla nomenclatura, il nome del model è automaticamente reso disponibile tra le proprietà del controller.
Anche le viste sono semplici e intuitive. Sì tratta di semplici file php nei quali vengono immerse le variabili valorizzate nell’azione del controller che la richiama.
L’ultima parte è rappresentata dal model che, nel caso specifico, estendendo appModel, è una sorta di Active record. Infatti i model creati in questo modo espongono metodi che ci consentono di effettuare le operazioni CRUD più comuni. Da segnalare che CakePHP mette a disposizione uno strumento che consente di generare automaticamente il model. L’ultima versione del framework sfrutta le potenzialità di PDO ,a patto che questo sia installato sul nostro server.
Database
Come spiegato nel paragrafo precedente, la manipolazione dei dati è affidata ai model del MVC. Sfogliando la documentazione di CakePHP ci si rende conto che MySQL non è il solo database con cui è possibile collegarsi. Sono disponibili metodi per le connessioni anche Mssql, Oracle e per finire SQLite. Sfruttando le classi appare evidente di come sia possibile lavorare coi database anche senza passare per il model.
Validazione
La validazione è strettamente implementata all’interno dei model. Infatti ci sono i relativi metodi che consentono di filtrare i dati ricevuti dall’utente prima di passarli al database. Anche sotto questo punto di vista CakePHP risulta essere efficiente. Sono presenti metodi per effettuare i controlli più comuni sui dati quali ad esempio, la lunghezza, l’obbligatorietà la mail ed altri. Altri framework presentano più opzioni ma non per questo mi sento di attribuire un valore negativo a quest’aspetto del framework.
Ajax e JavaScript
In CakePHP sono presenti alcune classi che facilitano la scrittura di codice JavaScript e Ajax. Nell’ultima release il numero di questi aiuti è aumentato in numero ed è stato infatti aggiunto il supporto ad HTML5. Niente di straordinario, intendiamoci, ma non è certo una funzionalità da considerare in modo negativo.
Caching
PHPCake mettere a disposizione numerosi motori per la cache delle informazioni. Sì tratta di quelli più comuni da APC a Memcache. All’interno della documentazione il sistema di caching è illustrato in modo discreto. Dalla documentazione si evince di come sia possibile includere o escludere parti della vista dalla cache. Nell’ultima release è possibile inserire le sessioni in sistemi di storage come Memcache con meno sforzo.
Autenticazione
Anche sotto questo punto di vista il framework si dimostra utile. Sono infatti presenti all’interno del sistema delle libreria che consentono oltre che la gestione dell’autenticazione anche il controllo dei ruoli. La cosa interessante è che è disponibile un intero tutorial su come impostare un’autenticazione.
Internazionalizzazione e localizzazione
CakePhp offre un sistema per l’internazionalizzazione che è tra i miei preferiti. Per trasformare un testo in un’altra lingua è sufficiente passare la stringa all’interno del metodo “magico” per le traduzioni. Il metodo in questione, il cui nome è banalmente formato da due underscore, va utilizzato insieme ad un file per le traduzioni. Allo stesso modo per settare la guida bisogna modificare inizialmente il file di configurazione oppure, per cambiare la lingua in runtime, la si può settare attraverso le variabili di sessioni. Decisamente un aspetto positivo per questo framework.
Supporto e guide
Analizzando molti framework mi è capitato di incontrare prodotti in cui la documentazione costituisse uno dei punti forti del framework e altri in cui era del tutto assente. La documentazione di CakePHP si trova esattamente nel mezzo dei due estremi. Non è eccezionale ma è abbastanza chiara e completa. Per il supporto c’è un gruppo ospitato da Google, ma è ovviamente in lingua inglese.