Questo articolo fa parte di una serie dedicata alla comparazione di Framework PHP.
È giunto il momento di parlare del framework Kohana che è arrivato, al momento in cui scriviamo, alla versione 3.2. Anch'esso si presenta come un modo semplice e veloce per realizzare applicazioni complesse in Php. Secondo gli autori il punto di forza del framework è rappresentato dalla semplicità di utilizzo e di espansione nonché dalla sua gestione degli errori e l'ottimo debug.
Installazione
La prima cosa da fare è scaricare il piccolo file, meno di un MB, dal sito ufficiale e posizionarlo in una cartella sul nostro server dopo averlo scompattato. Potrebbe essere necessario, in caso di sistemi linux, dover cambiare i permessi ad alcune cartelle. Puntando il browser al path in cui abbiamo copiato i file ci viene mostrata una schermata nella quale c'è il riepilogo che il framework effettua per verificare la compatibilità col sistema in uso. Sul sito non è indicata una versione minima del Php ma da una foto si vede che la 5.2 è compatibile con Kohana. Fatto questo eliminando il file install.php siamo pronti a lavorare. Molto semplice e rapido. Veramente ottimo.
Pattern MVC
Anche per questo framework abbiamo viene utilizzato il pattern MVC. A differenza degli altri le cartelle sono disposte in modo diverso. In particolare i controller e i models si trovano sotto la cartella class mentre le viste si trovano nella cartella views . Entrambi i gruppi si trovano nella cartella application che è ovviamente nascosta all'utente finale.
A ben considerare sia i controller che i model sono in genere classi Php a differenza delle viste che sono in genere normali file di tipo Php o html. La scelta degli autori mi sembra coerente con questo modo di pensare. Il nome del file del controller deve essere semplicemente quello del controller stesso mentre la classe ha come prefisso controller_. Da notare che è possibile anche organizzare i controller in varie sottocartelle facendo attenzione alla dichiarazione della classe. Questa oltre al nome del file deve contenere, separando i vari elementi con il carattere di underscore, le varie sub folder. Per quanto riguarda le azioni del controller sono ovviamente i relativi metodi il cui nome è dato dal prefisso action_ più il nome dell'azione stessa. Niente di nuovo quindi.
Per quanto riguarda le viste si tratta banalmente di file Php nel quale viene inserito l'output da mostrare all'utente. A differenza degli altri framework fin qui analizzati la vista non viene richiamata in modo trasparente. All'interno delle action del controller va indicata la vista che si intende renderizzare. Kohana propone una cosa molto interessante nel passaggio delle variabili ad una vista. Per questa operazione esistono due metodi distinti: set
e bind
. La differenza tra i due è che il secondo passa i parametri per referenza. La cosa potrebbe tornare utile.
Un'altra differenza con gli altri framework è che una classe del model non è una rappresentazione di una tabella del database. In esso vengono definite sempre le funzioni necessarie alla manipolazione dei dati ma, per quanto riguarda il database, le cose sono differenti. Difatti, leggendo con attenzione la guida, si scopre che è possibile creare un model estendendo la classe ORM che come possiamo facilmente dedurre dal nome, ci consente di interagire col database in modo facile e veloce. Nel caso il model venga esteso da ORM per istanziarlo è necessario riferirsi alla classe statica ORM invece che model.
Database
Per quanto riguarda la classe database, o come preferiscono gli sviluppatori "il modulo", fa esattamente quello che ci si aspetta: interagisce con il database. Il file di configurazione è molto intuitivo. C'è la possibilità di utilizzare come libreria di connessione MySQL oppure quella più versatile PDO. La classe fornisce i metodi classici per le operazioni CRUD sul database. Ci sono una serie di metodi che consentono di ottenere "meta informazioni " dal database e dalle tabelle come ad esempio la lista dei campi , delle tabelle o per finire, l'esistenza o meno di una tabella.
Validazione
Per quanto riguarda la validazione, anche Kohana è dotato di un'apposita classe dedicata allo scopo. Nel momento in cui scrivo l'articolo non è presente alcuna spiegazione di come implementare questa funzionalità all'interno dei model o dell'ORM . Sicuramente un punto a sfavore di questo framework.
Ajax
Anche in questo caso il framework mi delude. Non esiste nessun modulo a sostegno di JavaScript né tantomeno di Ajax. Ribadisco ancora una volta che non sono cose necessarie ma che danno un valore aggiunto al framework.
Caching
Kohana mette a disposizione un sistema di caching sfruttando diversi motori come ad esempio APC eAccelerator , File, Memcached, Memcached-tags , SQLite Xcache. Anche in questo caso la guida lascia molto a desiderare ma almeno si capisce che per far funzionare la cache su kohana occorre una versione di Php a partire dalla 5.2.4 e kohana a partire dalla 3.04.
Autenticazione, internazionalizzazione e localizzazione
In questo caso abbiamo bel poco da scrivere. Il motivo non è tanto che Kohana non permetta queste cose ma il fatto che sono poco documentate. Non è possibile che uno sviluppatore debba andare a caccia di informazioni per implementare queste funzionalità che, sono alla base di una applicazione web 2.0.
Supporto e guide
Per quanto riguarda la documentazione, perlomeno della versione 3, la trovo davvero pessima. Ci sono pochi esempi e pochissime informazioni che aiutino a capire realmente le potenzialità, ammesso che ci siano, del framework. Un esempio su tutti è rappresentato dalla scarsa documentazione su argomenti quali l'autenticazione o l'internazionalizzazione. Ovviamente le poche informazioni che ci trovano sono in lingua inglese. Anche il forum non sembra un granchè.
Ulteriori caratteristiche
Ci sono molti moduli che renderebbero appetibile l'utilizzo di Kohana a cominciare da quello per la manipolazione delle immagini . Ma anche in questo caso il difficile reperimento delle informazioni spinge a scegliere altre strade.
Guida ai Framework PHP
- Articolo 1: dooPHP
- Articolo 2: YII
- Articolo 3: Symfony
- Articolo 4: CodeIgniter
- Articolo 5: Zend
- Articolo 6: Kohana
- Articolo 7: Akelos (in via di pubblicazione)
- Articolo 8: CakePhp (in via di pubblicazione)