Zend Framework Tutorial - 1

L'MVC di Zend Framework

Vogliamo realizzare un sito nel quale l'utente può vedere l'elenco delle news registrate, inserirne di nuove, modificare e leggere il testo completo di una notizia.

Lo Zend Framework ci suggerisce di raggruppare tali funzionalità in modo da avere degli insiemi di "azioni" correlate. Nel nostro caso avremo l'insieme delle azioni che è possibile effettuare sulle notizie (visualizzazione, inserimento, modifica e cancellazione). In situazioni più complesse avremo sicuramente molti insiemi di funzionalità (gestione utente, gestione download/upload file, gestione archivio news, gestione commenti, ecc.).

Per ciascun insieme di azioni dobbiamo creare una classe che deve implementare la logica di funzionamento delle singole funzionalità, ma non si deve occupare dell'interfaccia grafica (non deve contenere HTML) e non deve effettuare direttamente l'accesso ai dati necessari alla realizzazioni delle funzionalità (niente query quindi). Questa tipologia di classe costituisce il Controller citato nella pagina precedente e deve contenere un metodo (una funzione) per ciascuna azione di cui è responsabile. Nel nostro caso la classe che funge da Controller nelle notizie avrà 4 metodi: uno per la lettura di una singola notizia, uno per l'inserimento, uno per la modifica ed uno per la cancellazione di una notizia.

Riepilogando, le singole funzionalità (dette "Action") del nostro sito web devono essere raggruppate in insiemi correlati e per ciascun insieme deve essere realizzata una classe (il Controller) che possiede un metodo per ogni Action da implementare.

Accanto ai Controller necessari al funzionamento della nostra applicazione, individuati dall'analisi che abbiamo appena fatto, due ulteriori Controller devono essere sempre realizzati per gestire delle operazioni speciali. Un Controller di nome IndexController si deve occupare di realizzare la home page del sito attraverso un metodo di nome indexAction , infatti la home page è una funzionalità presente in tutti i siti. Nel nostro caso questo Controller mostrerà l'elenco delle news presenti nel database (ecco perché non abbiamo considerato tale funzionalità nel controler delle news!). Un secondo Controller di nome ErrorController invece deve gestisce le pagine di errore attraverso un metodo di nome errorAction, automaticamente interpellato dal framework ad esempio quando l'utente tenta di accedere ad una pagina inesistente, ovvero ad una "Action" non implementata dal nostro sito. Vedremo i dettagli di questi 2 Controller quando mostreremo il codice del progetto.

L'IndexController può implementare anche altre Action per cui si potrebbe realizzare un sito web anche solo con questo Controller e con l'ErrorController. A dire il vero anche l'ErrorController potrebbe non essere realizzato, ma così facendo in caso di errore otterremo delle sgradevoli segnalazioni, simili ai fatal error di PHP.

L'HTML necessario a ciascuna Action non deve trovarsi nel Controller ma in file separati, detti template. Tali file possono contenere codice PHP ma è buona norma che questo serva solo alla visualizzazione dei contenuti dinamici. Ciascuno di questi file è in generale associato ad una particolare Action e in questi casi lo Zend Framework, grazie ad alcune convenzioni sui nomi che vedremo in seguito, è in grado di individuarlo ed utilizzarlo automaticamente in base alla funzionalità richiesta dall'utente. L'esecuzione di questi file avviene all'interno della classe che realizza la View e che, al contrario dei Controller, non dobbiamo creare noi perché già presente nel framework. Analizzando il codice vedremo come la View offre molte funzionalità che ci semplificheranno il compito di realizzare i template HTML.

Infine l'accesso ai dati, come premesso, non deve essere eseguito ne dal Controller ne dalla View, ma deve essere effettuato da classi specializzate dette Model. In questo tutorial per realizzare i Model useremo un approccio molto simile a quello di una comune applicazione web PHP/MySQL, ovvero attraverso delle query dirette sul database, ma è importante sapere che lo Zend Framework offre potenti alternative che però aggiungerebbero complessità a questo tutorial. Realizzeremo quindi una classe con diversi metodi necessari ad effettuare le operazioni sul database: lettura, inserimento ed aggiornamento delle news. Lo Zend Framework in questo caso non dà indicazione su come organizzare la classe.

7 commenti

1 Maria Maria giovedě 16 aprile 2009, ore 14:20
Ciao Gianni,non voglio scoraggiarti ma faresti bene a realizzare dei tutorial un pò più completi. Serve un progetto dalla A alla Z che aiuti un neofito nei primi passi e non una semplice spiegazione generica di cosa Zend è capace di fare.

Ho visto anche come hai trattato Zend_ACL. Molto povero.

Sono una programmatrice da parecchi anni oramai e solitamente scelgo i tutorial inglesi come questo: http://codeutopia.net/blog/2009/02/06/zend_acl-part-1-misconceptions-and-simple-acls/

A presto
Maria
2 Alessandro Alessandro giovedě 30 aprile 2009, ore 01:14
Dal mio punto di vista è stato molto chiaro, soprattutto per chi è alle prime armi con Zend...
3 Renato Renato lunedě 1 giugno 2009, ore 23:30
Programmo in php, per necessità ora devo imparare ad utilizzare Zend, perchè mi è stato richiesto, ma con questo tutorial in pratica ancora non ho imparato nulla. Grazie in ogni caso per lo sforzo.
4 domenica 26 luglio 2009, ore 12:27
Dal miopunto di vista bisognerebbe ringraziare chi spende gratuitamente il proprio tempo e le proprie risorse x cercare di aiutare gli altri.
Riferendomi ai precedenti commenti ache se il tutorial potrebbe non sembrare completo perchè non rispetta il nostro livello di preparazione, ad esempio perchè programmiamo in php da anni potrebbe essere utilissmo a chi è ad un entry level.
Pertanto ringrnazio l'autore per la panoramica offerta.
Ho appena scaricao il codice ci darò un'occhiata.
5 sabato 8 agosto 2009, ore 16:26
Pienamente d'accordo con <b>bluarea</b>: bisogna essere comunque grati a chi in rete lascia anche una sola riga di testo GRATUITAMENTE.
Inoltre Maria, per quanto mi riguarda, questo post mi <b>fu di grande aiuto</b> l'anno scorso quando mi avvicinai allo Zend Framework. Vorrei notassi che è stato scritto nel <b>Luglio 2007</b>, Zend Framework era alla <b>versione 1.0.0</b>!

<blockquote>Sono una programmatrice da parecchi anni oramai e solitamente scelgo i tutorial inglesi come questo</blockquote>

Ecco, bene. Perchè non lo scrivi tu un bel Tutorial? Magari <b>traducendo</b> quel link che segnali.
6 domenica 25 ottobre 2009, ore 20:22
il tutorial è perfetto per quelli come me che non vogliono perderesi in preamboli vari ed arrivare al dunque, poi credo che il tutorial abbia racchiuso abbastanza bene la logica del mvc di zend, quindi grazie
7 domenica 1 novembre 2009, ore 17:04
Per me questo tutorial è fatto molto bene. Non c'è bisogno di andare nello specifico per far capire dei concetti. Inoltre non è semplice cogliere l'essenza di una cosa così grande. Ottimo tutorial grazie mi ha aiutato parecchio a capire la filosofia Zend.

Ciao!
Effettua l'accesso o registrati per inserire un commento