Sviluppare con lo ZendFramework è qualcosa di estremamente semplice, essendo un framework abbastanza flessibile e sviluppato modularmente ci permette di usare dei componenti senza essere obbligati a usarli tutti.

Di seguito vedremo come sviluppare un semplice sito internet con una schermata principale in pochi piccoli Steps, usando alcuni dei componenti che il framework ci mette a disposizione.

Per prima cosa vediamo la struttura delle directory:
codice:
  |_librerie
  |    |_Zend
  |         |_I VARI COMPONENTI ZEND
  |
  |_app
  |     |__controllers
  |               |__IndexController.php
  |               |__ErrorController.php
  |     |__views
  |     |      |__scripts
  |     |             |__index
  |     |             |      |_index.phtml
  |     |             |__error
  |     |__models        |_error.phtml
  |
  |__www
         |_.htaccess
         |_index.php
In pratica:
la directory WWW è da trasformare come htdocs/ nella maggior parte degli hosting web, in pratica deve essere l'unica a vedere la luce del web.

in questa vengono contenuti 2 file
1) La index, il file che conterrà le direttive per incanalare le richieste al controller
2) Il file .htaccess nel quale andremo a mettere le direttive Rewrite che porteranno tutte le chiamate verso index.php

codice:
.htaccess

RewriteEngine On
RewriteBase /
RewriteRule !\.(ico|png|jpg|css|js|gif)$ index.php
nel file Index.php invece andremo a mettere queste direttive:

Codice PHP:
<?php
/*Diciamo allo script di stampare tutti gli errori.*/
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors'1);

/*settiamo come include path la directory che contiene i file Zend*/
ini_set('include_path''../librerie');

/*Includiamo Zend Loader per caricare di volta in volta le classi che ci servono*/
include_once('Zend/Loader.php');

/*Carichiamo i primi componenti che ci serviranno*/
Zend_Loader::loadClass('Zend_Controller_Front');
Zend_Loader::loadClass('Zend_Db');
Zend_Loader::loadClass('Zend_Registry');
Zend_Loader::loadClass('Zend_Config_Ini');

/*Adesso carichiamo il file di configurazione .ini*/
$config = new Zend_Config_Ini('../config.ini''offline');

/*
Struttura del file .ini
[offline]
dbname = prova
dbhost = 127.0.0.1
dbusername = unusername
dbpassword = unapassword
dbadapter = Mysqli
debug = true
*/

/*Creiamo i parametri per la connessione al DB mysql*/
$db Zend_Db::factory
(
    
$config->dbadapter,
    array
    (
        
'host'        => $config->dbhost,
        
'username'    => $config->dbusername,
        
'password'    => $config->dbpassword,
        
'dbname'    => $config->dbname
    
)
);

/*proviamo a connetterci*/
try 
{
    
$db->getConnection();
}
/*ci sono eccezzioni?*/
catch (Zend_Db_Adapter_Mysqli_Exception $e)
{
    echo 
"C'&egrave; stato un errore nella connessione MySQL";
    if(
$config->debug)
        print 
": " $e;
    exit();
}
catch (
Zend_Db_Exception $e)
{
    echo 
"C'&egrave; stato un errore nella connessione MySQL";
    if(
$config->debug)
        print 
": " $e;
    exit();
}

/*se ci siamo collegati , registriamo le variabili che ci serviranno all'interno delle classi che useremo per reperire dati dal DB*/
Zend_Registry::set('db'$db);

/*e anche i parametri di configurazione*/
Zend_Registry::set('config'$config);


/*Adesso diamo vita alla struttura MVC*/
$front Zend_Controller_Front::getInstance();
$front->setControllerDirectory('../app/controllers');

/*se throwExceptions è uguale a true, lo script su ogni errore ci dara tutte le informazioni di Debug, sennò se e false e abbiamo un ErrorController configurato, uscirà quella pagina.*/
$front->throwExceptions($config->debug);

/*Let's roll*/
$front->dispatch();

?>