Ogni progetto è rappresentato in Zend Framework da file conservati in alcune directory. Nella figura qui accanto vi è una rappresentazione grafica di questa struttura.
La directory "public"
Raccoglie tutti i file che devono essere accessibili dall'esterno: ZF utilizza il design pattern Front Controller, per cui tutte le richieste web esterne sono processate attraverso un singolo file (normalmente index.php).
Per mantenere un livello di sicurezza adeguato questo deve essere l'unico file PHP a risultare accessibile dal web server. In public normalmente risiedono i file immagine, i CSS ( Cascading Style Sheets) e i file Javascript, opportunamente raccolti in sotto-directory.
Questa directory contiene anche il file .htaccess responsabile dell'impostazione della variabile d'ambiente APPLICATION_ENV (utile per gestire ambienti multipli nella nostra applicazione) e di indirizzare tutte le richieste (anche quelle di file inesistenti) verso il file index.php.
La directory "library"
Questa è la directory che raccoglie le librerie utilizzate dall'applicazione. ZF stesso verrà posizione all'interno di library. In questa cartella inoltre risiedono tutte le librerie di terze parti che necessitano all'architettura della web application: se ad esempio utilizziamo un template engine come Smarty per implementare il rendering delle pagine web, oppure ci serviamo di framework per la gestione semantica del contenuto (come ad esempio RAP o ARC2), è qui che risiederanno tali librerie.
La directory "application"
Questo è il cuore della nostra applicazione: qui risiedono il Model, la View e il Controller. Per mantenere la separazione dei tre livelli logici i file vengono raccolti in tre sotto-directory, una per livello. Chiaramente è possibile creare tante altre cartelle quante necessarie, come ad esempio quelle per i file di configurazione. La logica di business non è quindi accessibile direttamente e pubblicamente, essendo raccolta al di fuori della cartella "public", che come abbiamo visto è l'unica ad essere visibile dall'esterno.
La directory "test"
Quando si sviluppano applicativi enterprise è buona norma seguire lo sviluppo guidato dai test. Questa tecnica ci permette di risparmiare una grande quantità di tempo, di sviluppare più rapidamente e di scrivere applicativi più sicuri e semplici da manutenere.
Test conterrà gli Unit test: questi sono utilissimi per controllare che il codice scritto continui a funzionare correttamente con il crescere dell'applicazione. In un applicativo enterprise in cui sono presenti librerie preesistenti e in cui andiamo ad aggiungere funzionalità capita sovente di dover procedere al refactoring del codice esistente: gli Unit test sono uno strumento di notevole importanza per verificare che il codice scritto precedentemente continui a funzionare nonostante le modifiche e gli aggiornamenti.
ZF dispone di uno strumento molto potente per il RAD (Rapid Application Development): la Zend Command-Line. Questo tool permette agli sviluppatori di accedere al framework Zend Tool da linea di comando. Zend Tool Project fornisce una serie di servizi per creare nuovi progetti o per aggiungere componenti a quelli esistenti. Zend Tool Project è configurato come parte dell'installazione di Zend Server, ma non è difficile configurarlo manualmente se il nostro ambiente di sviluppo non comprende Zend Server.