Salta al contenuto

Andrea Gandino

Solo il blog di un altro web designer.



Framework PHP

Postato il 22 Febbraio 2007

Il progetto cui sto attualmente lavorando richiede l’utilizzo di PHP come linguaggio di programmazione. Mi è capitato di pensare un paio di cose, riguardo la progettazione e lo sviluppo degli odierni portali. La cosa banale è che lo straordinario successo di Ruby è dovuto a Rails, più che alla straordinaria bellezza del linguaggio in sé; l’altra cosa, forse un po’ meno banale, è che, forse, se non si utilizzassero i framework, probabilmente programmare in PHP non avrebbe più senso.

Tutto questo per introdurre un po’ di quello che penso circa i due framework che si sono contesi le mie preferenze ultimamente, in attesa di dare un’occhiata anche al nuovo Symfony 1.0, vale a dire CakePHP e Code Igniter.

Entrambi, proprio come Rails, portano avanti il concetto di MVC come design pattern per le applicazioni.

Non vi sono troppe differenze, diciamo. I controllers gestiscono tutte le funzioni del sito, delegandole alle singole funzioni. Tuttavia, è bene notare che CakePHP riesce a gestire il tutto in maniera più elegante, permettendo di passare dei parametri alle funzioni, prendendoli direttamente dagli url (Code Igniter fa la stessa cosa, ma ha bisogno di un particolare helper).

La base comune di entrambi i framework, oltre al già citato MVC, prevede l’uso di helpers e librerie predefiniti, ma anche definiti dall’utente.

Diciamo che la cosa che fa ammirare Rails, è la vera e propria magia che gli sta dietro. Gran parte del merito va, secondo me, attribuito alle relazioni tra tabelle, che permettono di prelevare i dati di entità (modelli) correlate tra loro.

Questo è con tutta probabilità il fattore che maggiormente influisce nella scelta tra CakePHP e Code Igniter, dal momento che il primo, generalmente più potente e completo, offre il supporto per dette relazioni, mentre il secondo, più semplice ed immediato, (ancora) non le prevede.

Direi che si può vivere bene anche senza usare le relazioni tra tabelle, anche se, come ovvio, se usata correttamente è una caratteristica estremamente utile.

Le documentazioni sono complete ed esaurienti. Di Code Igniter non ho però trovato tutorial scritti, bensì solo screencast.

Entrambi i framework hanno un eccellente supporto. Di CakePHP potete trovare il relativo gruppo su Google Groups, mentre per Code Igniter potete fare una visita al forum ufficiale, entrambi in inglese.

In generale, CakePHP è più complesso ma più potente di Code Igniter, e probabilmente risulta essere più indicato in progetti più ampi, mentre il secondo, sebbene abbia una flessibilità davvero notevole, è forse preferibile per la creazione di siti un po’ più piccoli (nulla vi vieta di utilizzarlo anche in altre circostanze, comunque).

Quali sono le vostre opinioni a riguardo? Avete provato anche altre alternative?


Ulteriori dettagli sull'articolo

Categorie
Catalogato nelle seguenti categorie: framework, php, programmazione

Un commento a “Framework PHP”

# Luigi 2 Novembre, 2007

Per un progetto che ho in mente, www.bamers.net, mi sono trovato a dover scegliere un framework PHP: la mia scelta è caduta su Code Igniter.
Premetto che ero un neofita di MVC, ho scandagliato in lungo e in largo la Rete, i siti ufficiali e tutto ciò che trovavo googlando, ho provato ad installarli e mi sono fatto la seguente idea.
CakePHP è apparentemente più completo, ma anche con tutti i tutorial sul sito non sono riuscito a farmi bene un’idea di come strutturare un’applicazione MVC con esso. Inoltre non mi è piaciuto il modo in cui vengono trattati i db relazionali, sfruttando singolari e plurali sui nomi delle variabili e delle tabelle per scrivere meno SQL, finendo a mio parere per complicare inutilmente le cose.
Code Igniter possiede il dono della semplicità, non richiede di sposare per forza la filosofia di CakePHP per l’accesso ai dati e contiene comunque una gamma completa di helper, plugin, controller e simili.

Lascia un commento

Riferimenti esterni

Al momento non sono presenti riferimenti esterni per questo articolo.


Fondo

By XHTML + CSS.