Sviluppo software

CodeIgniter vs Yii framework vs CakePHP vs Zend framework vs Symfony vs Kohana vs Akelos vs DooPHP: Quale framework PHP scegliere?

La risposta sintetica è: nessuno, sono tutti la stessa minestra!

Tutti i framework elencati cercano di distinguersi uno dall'altro, ma in realtà sono uno la copia dell'altro. Basta guardare le caratteristiche riportate sui loro siti o latabella comparativa di wikipedia .

CodeIgniter Yii framework CakePHP Zend framework Symfony Kohana Akelos DooPHP

Riassumendo hanno tutti le solite caratteristiche:

  • paradigma ad oggetti
  • design pattern MVC (Model View Controller)
  • utilizzano sistemi di Object-relational mapping (ORM)
  • Supporto all'i18n (ovvero multilingua)

e le solite non-caratteristiche:

  • facile da usare
  • veloce/performante
  • flessibile
  • stabile, affidabile
  • sicuro
  • interoperabile
  • supportato dalla comunità
  • ben documentato
  • ecc.

Se però analizziamo le caratteristiche pubblicizzate abbiamo quanto segue:

Paradigma ad oggetti OOP#

La sezione di wikipedia è più che esplicativa:http://en.wikipedia.org/wiki/Object-oriented_programming#Criticism

Design pattern MVC#

Di per sè l'idea è buona, ma unito alla OOP ha l'effetto di aumentare la complessità con una scarsità di benefici.

Il flusso logico dell'applicazione è sparpagliato in tanti file e utilizzando OOP tipicamente è nascosto dall'ereditarietà tra classi. Invece di leggere il flusso logico di un listato di codice in sequenza bisogna continuamente saltare da un file all'altro. Il risultato è che per aggiungere una funzionalità o modificare un programma che segue questo pattern tipicamente è di più il tempo che si passa a capire come innestarsi nella logica che si vuole modificare rispetto al tempo speso nell'operare la modifica.

Object-relational mapping (ORM)#

Anche in questo caso l'ORM è di fatto un tentativo di soluzione ai problemi introdotti dalla OOP nell'interazione con un DB.

Sicuri contro attacchi SQL Injection e XSS#

La tipica frase che si legge è: utilizza il nostro framework e in automatico la tua web application sarà sicura.

Di fatto però questa frase comunica allo sviluppatore un falso senso di sicurezza perché lascia intendere che ci penserà il framework a rendere sicura la web app, ma in realtà ciò non è possibile. Per sua natura stessa infatti la sicurezza è un tema pervasivo di tutta la progettazione, lo sviluppo e il deploy di un applicazione e pertanto le minacce legate alla sicurezza devono essere chiare allo sviluppatore (non si può nascondere la testa sotto la sabbia).

Per di più la maggior parte dei framework sopra esposti non forniscono funzionalità realmente utili come l'escaping di HTML, Javascript ecc.

Conclusione#

Il difetto dei web framework è che sono troppo generici, perché vogliono consentire lo sviluppo di qualsiasi applicazione web, ma così facendo aggiungono uno strato di complessità fornendo in cambio funzionalità per lo più generiche.

Nel caso specifico del php inoltre già il linguaggio è pensato per il WEB e di conseguenza già il linguaggio ha tutto quello che serve per lo sviluppo di applicazioni WEB generiche.

Il risultato netto per utilizzare i framework sopra esposti è dover imparare oltre ad un linguaggio di programmazione come il PHP, un paradigma di programmazione OOP, un design pattern MVC e un framework che di fatto non aggiunge nulla, ma aumenta la complessità con tutto quello che ne deriva:

  • programmi più buggati
  • produttività rallentata

Soluzione#

L'unica soluzione è non usare un framework generico, ma utilizzarne uno specifico per il tipo di applicazione che si vuole creare.

Noi di Garda Informatica abbiamo creato un nostro framework, specifico per lo sviluppo di applicazioni gestionali web based. La specificità del framework è la chiave per ottenere uno strumento efficiente ed efficace.

Autore: Lorenzo Chiodi
Senior software developer con più di 10 anni di esperienza nello sviluppo di soluzioni web based, enterprise, su misura. Dal 2011 socio fondatore di Garda Informatica Snc condivide questa avventura col fratello Giovanni.

Promemoria sui Cookie e sulla Privacy

Leggi l'informativa
closeIcona closesearchIcona searchmore vertIcona more vertmenuIcona menulinkIcona link