Zend Framework Tutorial - 2

Struttura del progetto

Nel precedente articolo abbiamo cominciato a vedere quali sono gli elementi che costituiscono la nostra applicazione web realizzata con lo Zend Framework. Abbiamo detto che sono necessarie delle classi di tipo Controller per ciascun gruppo di funzionalità correlate, un Controller per gestire la home page (IndexController) ed un altro per la pagina di errore (ErrorController). Abbiamo detto poi che avremmo utilizzato diversi file per conservare i template HTML e uno o più classi Model per effettuare l'accesso ai dati. Infine abbiamo visto come il processo di generazione di una qualunque pagina parte da un unico file, il file di bootstrap, che nel nostro esempio si chiama index.php e che contiene un oggetto Front Controller in grado di smistare tutte le richieste dell'utente al Controller adeguato.

Vediamo adesso come questi file sono organizzati nell'alberatura delle cartelle del progetto. Supponiamo di conservare tutti i file del progetto in una cartella "ZF-tutorial" all'interno della document root di Apache (la cartella "htdocs"). Per sfruttare alcuni comodi automatismi dello Zend Framework è conveniente organizzare i file contenenti le classi Controller ed i template HTML secondo un preciso schema. In questo modo ridurremo al minimo lo sforzo di specificare i percorsi dei file.

Secondo lo schema proposto dallo Zend Framework ciascuna classe Controller va salvata in un file dedicato. La classe deve chiamarsi secondo lo schema NomeClasseController ed il file che la contiene deve avere lo stesso nome. Ad esempio il Controller che gestisce le funzionalità associate alle news (visualizzazione, inserimento, modifica e cancellazione) si chiamerà NewsController e verrà salvato nel file NewsController.php. Tutti i Controller devono essere posti in una cartella, che nel nostro esempio si chiama "controllers" (che fantasia!).

I file contenenti i template HTML devono essere invece conservati in una cartella di nome "views", situata allo stesso livello della cartella dei Controller. La cartella "views" deve contenere una cartella "scripts" che a sua volta deve contenere una cartella per ciascun Controller, nella quale inserire solo i template che verranno utilizzati da quel particolare Controller. Queste cartelle devono avere lo stesso nome del Controller, con sole lettere minuscole e senza la desinenza "Controller". I file dei template devono avere l'estensione phtml e, se hanno lo stesso nome di una Action del Controller, allora verranno caricati in automatico all'esecuzione di quella particolare Action. Riprenderemo questo discorso quando commenteremo il codice dei Controller realizzati per la nostra applicazione.

L'immagine seguente mostra l'organizzazione dei file appena descritta.

cartelle.gif

In figura si notano quindi:

  • i tre file contenenti i tre Controller (ErrorController, IndexController e NewsController)
  • la cartella dei template "views", contenente la cartella "scripts" che a sua volta contiene: una cartella per i template usati dall'ErrorController (error.phtml), una per quelli usati dall'IndexController (index.phtml) ed una per quelli usati dal NewsController (news-form.phtml e view.phtml)
  • il file di bootstrap index.php

Oltre a quelli precedentemente citati, in figura sono presenti altri file:

  • NewsModel.php, l'unico Model della nostra applicazione, che contiene la classe responsabile della gestione dei dati.
  • main.css che è un semplice file CSS, richiamato in tutte le pagine del sito
  • header.phtml e foother.phtml sono 2 template HTML che vengono inclusi da tutti gli altri template dell'applicazione e che contengono rispettivamente l'intestazione ed il pie' di pagina comuni a tutte le pagine del nostro sito.
  • .htaccess, file che ci permette di configurare alcune opzioni di Apache e PHP direttamente dalla cartella della nostra applicazione, che introdurremo nella prossima pagina.

E' doveroso tener presente che l'aver posto le cartelle dei Controller, dei Model e dei template all'interno della root di Apache in realtà non è la migliore scelta possibile, poiché così facendo diamo la possibilità agli utenti di accedere direttamente ad ogni singolo file. Sarebbe stato meglio mettere queste cartelle al di fuori della document root del server web. La scelta fatta in questo tutorial è dettata solo da scopi didattici. Ricordo infine che questa organizzazione dei file, come tutte le caratteristiche dello Zend Framework, può essere completamente personalizzata, perdendo semmai qualche automatismo.

Pagine: 12 3
Effettua l'accesso o registrati per inserire un commento