…l’elefantino cresce..
Ebbene si, Zend Framework continua nel suo processo evolutivo!
ZF2 è stato presentato ufficialmente in occasione del ZFDay tenutosi a Milano, al Talent Garden, il primo febbraio di quest’anno.
La conferenza, organizzata da GrUSP e #pugMi , si è articolata in 10 interventi tenuti dai più esperti programmatori PHP e ZF.
Ad aprire le danze uno dei più stretti collaboratori di ZF, Enrico Zimuel, che in poche pennellate introduce i cambiamenti fondamentali di ZF2: introduzione dei moduli che permettono il reuso del codice, la gestione ad eventi, le regole di routing e migliori implementazioni per la sicurezza della app.
Il secondo intervento è di Steve Maraspin che confronta ZF1 con ZF2, andando ad evidenziare analogie e differenze. Il punto focale della sua presentazione è proprio il vantaggio di ZF2 di realizzare una struttura modulare. Partendo da un esempio di MVC delinea una struttura in cui il layer di Model è comune a tutte le Controller-View; con ZF2 ogni Controller-View ha il proprio Model. Le differenze si notano anche nella struttura dell’applicazione: compare una nuova cartella nello scheletro della struttura, “Vendor” dove è possibile sviluppare i proprio moduli e/o inglobare nella cartella “Module” moduli già esistenti e quindi codice mauro; la struttura dei moduli si ripercuote anche sulla configurazione e al bootstrap: si è passato ad una struttura ad array in cui andare ad indicare i moduli attivi.
Un altro punto fondamentale della nuova versione è il Service Manager: attraverso la configurazione è possibile indicare la struttura dati che si vuole creare e come specificare i parametri di invocazione; grazie anche agli alias è possibile configurare eventuali specializzazioni nella chiamata nel Controller. Altro nuovo punto innovativo, la gestione ad eventi: l’Event Manager avrà il compito di intercettare gli eventi e attivare gli opportuni “trigger” associati all’evento sollevato.
Se nel campo delle view le cose sono poco cambiate, nel caso di Form è stato introdotto l’InputFilter per la validazione dei dati.
E’ stata poi la volta di Michele Orselli che ha comparato Symfony 2 a ZF2 andando ad evidenziare la stretta analogia tra i concetti e la struttura di applicazioni sviluppate nei due framework.
L’intervento di Marco Pivetta presenta Doctrine ORM ispirato ad Hibernate; è possibile utilizzare il modulo (in realtà due DoctrineModule e DoctrineOrmModuel) per definire la struttura dati; sarà poi onere del modulo creare il DB. Con questo potente strumento, lo sviluppatore si dimentica del db mantenendo però tutte le sue potenzialità. Pecca del modulo è il fatto che non sono stati modellati trigger, viste e store procedure.
Altro importante intervento è quello di Walter Del Mut che spiega come costruire un semplice servizio REST utilizzando le direttive HHTP: POST, GET, PUT e DELETE possono essere viste come operazioni di manipolazione dati, CREATE, READ, UPDATE e DELETE (CRUD Webservices). Ll’HTTP non è più un semplice transport protocol ma un application protocol. Di conseguenza, anche le risposte http (2xx, 4xx, 5xx) vanno interpretate alla luce della nuova convenzione. ZF2 oltre a mettere a disposizione un modulo RESTfull, proprio grazie alla sua modularità e le regole di ruote è in grado di stabilire anche il formato di risposta alla chiamata del servizio (JSON, XML…).
Diego Drigani invece indica la riscrittura dei meccanismi di routing rispetto a ZF1, i cui principali cambiamenti sono limitati all’implementazione interna. Attenzione è stata data alla possibilità dell’utilizzo della console: partendo da un comando da console, è possibile ricostruire controller e action da eseguire.
L’intervento di Stefano Valle traduce in una linea guida tutti gli argomenti trattati negli interventi precedenti. Nell’ipotesi della costruzione di un sito di e-commerce, ha indicato passo dopo passo la costruzione e la strutturazione dell’applicazione attraverso ZF2; nel caso di studio ha poi descritto una possibile soluzione al pannello di amministrazione che non può essere visto come un modulo a sestante e riutilizzabile, ma integrato in orizzontale negli altri moduli.
Ancora un intervento da parte di Enrico Zimuel incentrato sullo sviluppo di applicazioni sicure. Infatti, ZF2 ha focalizzato l’attenzione sulla tematica della sicurezza; aspetti rivisti sono il modulo di autenticazione, il controllo degli accessi alla risorse (ACL vs RBAC), il controllo e la validazione dei dati provenienti in GET o in POST (FilterInput). Particolare enfasi è stata data al componente Zend/Crypt (il cui fautore è l’interlocutore stesso); l’algoritmo MD5 ormai risulta essere superato dalle potenzialità delle schede grafiche, mentre l’algoritomo bcrypt, implementato nel modulo Crypt, risulta essere affidabile e sicuro. Per quanto riguarda aspetti di crifratura e autenticazione, il BlockCipher sfrutta gli algoritmi standard, quali AES, SHA256, HMAC, con un’API molto semplice e composta essenzialmente da tre metodi (encrypt, decrypt,setKey).
A chiudere la giornata, l’intervento di Mariano Fiorenti che attraverso un caso di studio (il progetto e.Link ) dimostra l’efficacia dell’introduzione del framework.
Per tutti gli sviluppatori PHP, il prossimo appuntamento sarà al PHP Day!
Luca & Patrick
Complimenti per l’esaustivo riassunto della giornata. Appunto di contorno: “vendor” e “module” sono utilizzati in maniera inversa rispetto a quanto citato.
I agree, really well.