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'è stato un errore nella connessione MySQL";
if($config->debug)
print ": " . $e;
exit();
}
catch (Zend_Db_Exception $e)
{
echo "C'è 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();
?>