Une approche de Zend Framework 1.7
Zend fait parti de ces frameworks qui font beaucoup parler d’eux. Pour les néophytes ce n’est pas toujours évident de mettre en place et d’utiliser ce framework. Sans entrer dans les détails nous allons voir comment installer la dernière version en ligne de zend, la 1.7.
Ce qu’il faut
Si vous le savez pas, il faut php5 et activé le module_rewrite
Et on télécharge la dernière version.
On va créer notre dossier zenfacile où seront enregistrées les pages. Dans ce dossier on va créer un dossier Zend. Dans ce dossier on va mettre la librairie Zend.
Arborescence
L’arborescence de notre site va suivre une structure MVC traditionnel :

Comme on va faire de la réécriture d’url, on va ajouter un fichier .htaccess
# Règles de réécriture pour Zend Framework
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php
# Sécurité : Ne pas autoriser le parcours de répertoires
Options -Indexes
# Configuration PHP
php_flag magic_quotes_gpc off
php_flag register_globals off
php_flag short_open_tag on
voici le fichier .htaccess
Maintenant tout est prêt, on va pouvoir s’attaquer au php.
(eh oui ça va très vite on y va pas avec de la dentelle)
On va commencer par l’index.php
On va pas se précipiter, on va déjà voir si la librairie est bien chargé :
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);
date_default_timezone_set('Europe/Paris');
// mise en place des répertoires et chargement des classes
set_include_path('.'
. PATH_SEPARATOR . './library'
. PATH_SEPARATOR . './application/models/'
. PATH_SEPARATOR . get_include_path());
include "Zend/Loader.php";
echo 'salut Zend !';
Le message salut Zend ! devrait s’afficher sur cette page :http://localhost/zenfacile
C’est bon ?
Voici ce que l’on va mettre :
<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);
date_default_timezone_set('Europe/Paris');
// mise en place des répertoires et chargement des classes
set_include_path('.'
. PATH_SEPARATOR . './library'
. PATH_SEPARATOR . './application/models/'
. PATH_SEPARATOR . get_include_path());
include "Zend/Loader.php";
Zend_Loader::registerAutoload();
// setup controller
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->setControllerDirectory('./application/controllers');
// run!
$frontController->dispatch();
?>
Normalement vous avez une belle fatal erreur :
Fatal error: Uncaught exception ‘Zend_Controller_Dispatcher_Exception’ with message ‘Invalid controller specified (index)’ in C:\wamp\www\zenfacile\Zend\Controller\Dispatcher\Standard.php:241
Stack trace:#0 C:\wamp\www\zenfacile\Zend\Controller\Front.php(934): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 C:\wamp\www\zenfacile\index.php(23): Zend_Controller_Front->dispatch() #2 {main}
thrown in C:\wamp\www\zenfacile\Zend\Controller\Dispatcher\Standard.php on line 241
Pas de panique c’est normal
. Par défaut Zend recherche le contrôleur Index.
Et comme il n’existe pas, Zend nous génère une erreur.
Strucuture MVC
On va créer ce controleur :
zenfacile => application => controllers => IndexControler.php
Le nom de la classe doit forcément ce terminer par Controller
class IndexController extends Zend_Controller_Action
{
function indexAction()
{
$this->view->title = "Mon Zend";
}
}
Il faut savoir que dans chaque controleur il y a des actions (qui est en fait des méthodes de la classe).
Ces méthodes actions doivent se terminer par Action.
Ainsi pour l’action Index la méthode l’appellera indexAction.
L’objet $this->view est l’objet qui manipule la vue.
Comme vous l’avez remarquez notre classe hérite de Zend_Controller_Action.
Comment fait-on pour retrouver cette classe ?
Facile ! On remplace les _ par les / . Et voilà, on a l’arborescence et le nom de la classe.
Pour Zend_Controller_Action la classe se situeras dans :
Zend => Controller =>Action.php
La vue
Pour la vue, il faut aller dans le dossier views créer un dossier scripts.
Un fois ceci fait nous allons créer un dossier qui porte le nom du contrôleur. Le nom de notre vue sera alors index.
Le nom de la vue doit être le nom de l’action, son nom sera alors index.phtml
zenfacile => application => views => scripts => index => index.phtml
<html> <head> <title><?php echo $this->escape($this->title); ?></title> </head> <body> <h1><?php echo $this->escape($this->title); ?></h1> </body> </html>
on voit le message ! c’est que ça marche \o/
Pour la réécriture d’url zend fait vraiment simple. c’est http://lenomdusite/controleur/action. ![]()
On va créer une autre page, une page contact (elle aussi sera toute simple)
function contactAction()
{
$this->view->title = "Contact";
}
Avec une vue identique :
zenfacile => application => views => scripts => index => contact.phtml
<html> <head> <title><?php echo $this->escape($this->title); ?></title> </head> <body> <h1><?php echo $this->escape($this->title); ?></h1> </body> </html>
Pour y accéder ça sera : http://localhost/zenfacile/index/contact
Et voila notre Zend est installé, pour ne pas trop alourdir le tutoriel, j’ai fait l’impasse sur des notions importantes comme le MVC, si vous avez des questions n’hésitez pas à poster un commentaire.
Voici le dossier complet : zenfacile




(5 votes, moyenne: 4,00 max : 5)
avril 11th, 2009 at 8 h 14 min
Ce Tuto nous reconcilie avec Zend et donne une approche simple
d’un FrameWork qui semble trés compliqué au début notamment quand on veut l’installer, grâce à votre exemple et vos indications l’installation se fait sans aucun problème en quelques secondes !
juin 30th, 2009 at 9 h 28 min
Salut,
c’est super, une approche simple et efficace, Bravo !!
Aussi j’aimerais avoir plus de détails sur le fonctionnement de « set_include_path »?
j’utilise le ini_set(‘include_path’,’../application’)mais je n’arrive pas à faire fonctionner le model (tuto suivant).
Merci d’avance
juillet 25th, 2009 at 18 h 11 min
Pour que ça marche avec 1.8, j’ai changé les lignes :
include « Zend/Loader.php »;
Zend_Loader::registerAutoload(); //->deprecated
par :
require_once ‘Zend/Loader/Autoloader.php’;
Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);
juillet 25th, 2009 at 18 h 12 min
J’ai une tête de déprimé avec cet avatar aléatoire, didiou!
décembre 12th, 2009 at 14 h 45 min
Bonjour,
merci pour le tuto
zenfacile => application => controllers => IndexControler.php
zenfacile => application => controllers => IndexController.php
janvier 24th, 2010 at 2 h 24 min
Félicitations M. le Pédagogue!
J’ai bien avancé en moins de 5mn