Zend Framework è la struttura di supporto alla programmazione di mamma Zend. Più che un framework “auto-costruttivo” genere Ruby on rails è una grande collezione di librerie molto utili, ma anche altro.

La qualità maggiore dello Zend Framework è la possibilità di usare le sue singole librerie in modo quasi totalmente indipendente dalle altre, basterà includere la libreria interessata e questa includerà automaticamente le sue dipendenze. Un’ottima guida di riferimento con esempi per ogni classe la trovate nel Reference Guide disponibile anche per il download in PDF.

Tra le classi che ho trovato personalmente più interessanti vi segnalo: Zend_Cache, Zend_Db, Zend_Http e Zend_Mail (ottimo e completissimo sostituto della funzione mail()).

MVC: Model View Controller

Uno schema del pattern MVC da betterexplained.com

Uno schema del pattern MVC da betterexplained.com

Una best practice che ogni programmatore PHP dovrebbe acquisire è quella di dividere bene ciò che è PHP da ciò che è HTML per migliorare (non immaginate di quanto!) la leggibilità dei vostri script. Cosa ancora più interessante, ma ancor meno praticata, è separare la logica dal modello dati.

Il pattern di programmazione MVC è proprio ciò che può aiutarvi a realizzare quanto detto. E qui rientra in campo l’implementazione MVC di Zend framework che potete usare opzionalmente e con estrema flessibilità, tipica di ZF. Una introduzione all’uso del pattern MVC con gli strumenti di casa Zend è la guida Quick Start assolutamente da leggere.

Dopo aver letto la guida vi sarà sicuramente più chiaro cos’è il pattern MVC ma per capire un po’ meglio le cose vi consiglio di leggere questo breve post molto chiarificante riguardo il confine tra i vari componenti model, view e controller: Skinny Controller, Fat Model

Infine per chi come me dopo aver letto il Quick Start si è chiesto quanto è può essere flessibile l’indirizzo URL per chiamare ogni controller/azione anticipo questo link da gustare: Zend_Controller_Router_Route_Regex e

E nel modificare il routing ricordate:

Routes are matched in reverse order so make sure your most generic routes are defined first.

Buona lettura!