Introduzione a Zend Framework

weppos December 27th, 2007

Verrebbe da chiedersi se il titolo di questo post sia un riferimento a questo sito o al framework… direi entrambi, considerando che questo è il primo intervento ed il suo obiettivo introdurre, allo stesso tempo, l’argomento di questo progetto: il Framework Zend.

Rimandando (per ora) maggiori dettagli su questo sito, vorrei passare ad una breve panoramica sul vero protagonista in questa storia.

Zend FrameworkZend Framework è un framework web open source, scritto interamente in PHP 5 e rilasciato con licenza New BSD.
Lo scopo principale del framework è quello di offrire le funzionalità e gli strumenti necessari per rispondere a tutte le (principali) esigenze di sviluppo di un’applicazione web.
Il framework offre allo sviluppatore una ricca dotazione di librerie per concentrarsi sullo sviluppo principale del progetto invece di perdere tempo, come spesso succede, nei dettagli o nel reinventare la ruota.

Panoramica

Ogni grande progetto, normalmente, nasce sponsorizzato, per esigenza o su commissione di un’azienda.
La tradizione non si è interrotta neanche per la maggior parte dei framework MVC. Basti pensare che Rails era inizialmente stato concepito da 37Signals e solo in seguito rilasciato open source, mentre Symfony è sponsorizzato da Sensiolabs.

Come facilmente intuibile dal nome, dietro a Zend Framework c’è Zend.
Per chi non la conoscesse (difficile per un programmatore PHP…), Zend è la società alle spalle del PHP Engine, ovvero il cuore dell’interprete PHP.
Questo non solo colloca Zend Framework direttamente in una posizione privilegiata rispetto ad altri “concorrenti”, ma garantisce anche una certa qualità, affidabilità e continuità di sviluppo derivante dal chiaro interesse di Zend in questo prodotto.

Zend Framework, come anticipato, è completamente scritto in PHP 5.
Più precisamente, l’ultima versione disponibile (ad oggi 1.0.3) richiede PHP 5.1.4 o superiore come è possibile leggere nella documentazione d’installazione.

Questo requisito non rappresenta un capriccio per incentivare l’uso di PHP 5 che, sebbene disponibile da oltre 3 anni, ancora soffre di sindrome della ridotta considerazione a causa del suo fratello minore PHP 4.
In realtà Zend Framework sfrutta a fondo le novità di questa major release e non potrebbe coesistere con una versione precedente.

Come verrà analizzato nello specifico nella sezione architettura, tutte le librerie sfruttano una programmazione object oriented.
Buona parte di esse adotta funzioni o caratteristiche non retrocompatibili come i metodi speciali __call(), __get() e __set().

In realtà potremmo andare avanti ore motivando la scelta. Più semplicemente chiuderei affermando che la versione 5 rappresenta un’importante evoluzione del linguaggio PHP e non sarebbe saggio ignorarne le potenzialità.

Architettura

Zend Framework è progettato per aderire alle caratteristiche del design pattern MVC.
MVC è l’acronimo per Model-View-Controller, in italiano Modello-Vista-Controller.
Un’applicazione MVC si basa sulla separazione di quella che è la logica del prodotto dalla sua presentazione.

L’analisi del design pattern MVC è oltre l’obiettivo di questo articolo, per ora consiglio la lettura di questa presentazione in formato .pdf realizzata in occasione del PhpDay.

Un’altra caratteristica lampante di Zend Framework è la sua forte modularità.
Rispetto ad altri framework, la struttura delle librerie che lo compone non ha alcuna dipendenza a librerie esterne. Inoltre, ciascuna libreria del framework può essere considerata come una libreria autonoma, dipendente esclusivamente ad un limitato set di librerie necessarie al suo funzionamento.

In altri termini, potete scegliere di utilizzare in un programma esistente la libreria Zend_Feed senza portarvi dietro l’intero pacchetto, ad eccezione di Zend_Http_Client e Zend_Uri, alle quali Zend_Feed ricorre per il fetching di feed esterni e la gestione delle URL.

Certamente non vi serviranno i diversi Mb che compongono Zend_Pdf o l’intera struttura MVC.
Se poi in futuro decidete di aggiungere ulteriori elementi alla vostra applicazione, potrete sempre scegliere di integrare l’installazione con le librerie mancanti ed aggiornare il vostro programma, come una delle più classiche architetture a plugin.

Questa struttura si apprezza particolarmente quando l’esigenza è di estendere un sistema esistente senza riscriverlo completamente, sia esso un semplice script o una più complessa applicazione basata a sua volta su un altro framework.

Non è un mistero, ad esempio, che Zend_Framework sia spesso utilizzato in comunione con Symfony. Quest’ultimo integra, nella configurazione predefinita, un componente chiamato Zend Bridge ed un plugin sfZendPlugin che permettono la comunicazione tra Zend Framework e Symfony.
Altri plugin invece, come sfLucenePlugin, sfruttano invece specifici componenti di Zend Framework (in questo caso Zend_Lucene) e sono la dimostrazione pratica di quanto prima affermato in merito alla sua modularità.

In sintesi, l’architettuta dello Zend Framework è quella di un framework MVC altamente modulare e completamente object oriented.

Roadmap

Ci sarà tempo per analizzare nello specifico le singole roadmap, spesso conosciute come milestone e corrispondenti a specifiche release.
Il termine roadmap, in questa circostanza, trova una migliore collocazione nel contesto di obiettivi, requisiti e traguardi alla base dello sviluppo dello Zend Framework.

Sul sito ufficiale non manca una descrizione completa della roadmap per Zend Framework, vediamo quali sono gli elementi principali.

Espansione del supporto ai web service

Uno degli aspetti che più mi colpì quando mi avvicinai a Zend Framework per la prima volta era proprio il supporto integrato ad alcuni web service e la disponibilità di una serie di strumenti che rende l’integrazione con le API quasi un gioco da ragazzi.

Tra gli obiettivi rientra la continua espansione delle librerie parte di Zend_Service con il supporto a nuovi servizi e nuove API, sempre più spesso a disposizione degli sviluppatori.

Supporto ai sistemi digitali per la gestione delle identità

Anche in questo campo Zend Framework offre, probabilmente, uno dei supporti più evoluti anche a confronto con altri linguaggi.
Proprio in questi giorni ha fatto la sua timida comparsa Zend_OpenId e presto il supporto includerà anche altri sistemi di autenticazione.

Supporto alla gestione e generazione di form

Una delle caratteristiche essenziali in un’applicazione web sono i form che permettono una più completa interazione tra l’applicazione e l’utente.
Al momento Zend Framework è molto carente in questo ambito. Sono già disponibili diverse proposte in fase di approvazione, è probabile che molto presto qualcosa di pratico venga messo in cantiere.

Supporto a YAML

Nell’epoca dei framework MVC sembra quasi che non possa esistere un framework che non supporti YAML e che il buon vecchio XML sia oramai troppo “verbose” per un’applicazione 2.0 ;) !
Scherzi a parte, è obiettivo di Zend Framework il supporto al linguaggio con un condivisibile intento che traspare dalle pagine ufficiali: where it makes sense.

Strumenti di sviluppo

Tra le diverse librerie non tutte hanno come obiettivo l’interazione diretta lato web con un’applicazione. Alcune costituiscono codice utile a scrivere altro codice, un po’ la sottile ironia di un editor scritto in Java per scrivere codice Java…

Nell’intento di migliorare l’esperienza di sviluppo, sono in cantiere librerie utili ad automatizzare i processi, gestire la generazione automatica di attività ripetitive e minimizzare l’esigenza di “scimmie ammaestrate” per la scrittura del codice.

Un eccellente esempio di librerie è rappresentato da Rake, Pake e Phing.

Continua espansione delle funzionalità

Come dimostrato, l’ambito di Zend Framework non si riduce esclusivamente ad un semplice framework MVC.
Rientra in questa visione il continuo sviluppo di nuove librerie utili ad estendere le funzionalità del framework.

Alternative

Sebbene Zend Framework rappresenti un’ottimo framework MVC, sarebbe ipocrita affermare che ad oggi sia il migliore framework.
Inoltre, non citare qualche alternativa limiterebbe le aspettative di quei lettori che, come è (anche) giusto che sia, si aspettano di capire quale sia il più adatto alle proprie esigenze.

Le alternative a Zend Framework ad oggi, fine 2007, sono molto più numerose che qualche mese fa e senz’altro meriteranno qualche post più avanti.

In PHP 5 vale una segnalazione il framework Symfony, più volte citato in questo stesso articolo.
Sempre in PHP, con supporto a PHP 4, CakePHP ha saputo farsi apprezzare.

Cambiando completamente fronte e linguaggio, non può non essere citato IL framework web per eccellenza, ovvero Ruby on Rails, scritto completamente in Ruby e Django, scritto in Python.

Qualunque sia il vostro orientamento, non dimenticate comunque che il linguaggio è (e deve essere) solo uno strumento per lo sviluppo. Anche il framework o il linguaggio migliore, nelle mani di un fesso (per andarci limitato), non può che produrre un risultato scadente. ;)

6 Responses to “Introduzione a Zend Framework”

  1. Brunoon 04 Feb 2009 at 12:33 am

    Eccellente introduzione, grazie.
    Mi sorprende un po’ accorgermi di essere il primo commentatore, incredibile. Bhe, spero di essere il primo di una lunga serie. Ora mi iscrivo al RSS…

  2. Jimmyon 20 Mar 2009 at 11:51 pm

    Ottima introduzione!

  3. evilripperon 10 Apr 2009 at 9:26 am

    Bellissima introduzione…
    Condivido in pieno anche alcune affermazioni verissime come il fatto di non dover reinventare la ruota e di non dover avere code monkey :-D

    Ciao

  4. Airone Tranquilloon 12 Jul 2009 at 4:52 pm

    Dallo scorso 3 aprile 2009 sono impegnato nel confronto tra cakePHP e Zend Framework come argomento di tesi, vi farò sapere i risultati ;-)

  5. MpMpon 19 Aug 2009 at 6:17 pm

    Ciao a tutti, posso vendere un CMS che ho sviluppato io sfruttando lo zend framework???

  6. Micheleon 28 Aug 2009 at 10:25 am

    Bella introduzione.

    @MpMp Zend Framework è sotto licenza BSD ( http://it.wikipedia.org/wiki/Licenze_BSD ) e quindi sono ancora più open delle GNU.

    Puoi tranquillamente inserire ZF nel tuo CMS, come stiamo facendo noi.

Trackback URI | Comments RSS

Leave a Reply