Commencer avec Zend Framework

Publié le 13 mai 2008 par Dator

Ce billet va vous présenter comment préparer vos dossier, vos fichiers et vous éclairer sur l’organisation de tous vos composant en vu d’utiliser le framework de Zend.

Nous allons commencer par télécharger la dernière version du framework à cette adresse.

Organisation des dossiers

L’organisation des dossiers de fait comme ceci :

Nous remarquons que nous mettons en place 3 dossiers principaux :

  1. Le dossier application (contient l’ensemble des fichiers de votre application).
  2. Le dossier library (contient le framework de Zend).
  3. Le dossier public qui va contenir vos images, vos css et vos javascripts.

Avec cette organisation, nous avons une application claire et très simple à utiliser.

Dans le dossier application, nous avons 3 dossiers (controllers, models et views) qui vont servir pour la mise en place du MVC de Zend.

  • Le Controlleur est le centre de votre page, il fait le lien entre le code brut et la vue ou est afficher le résultat.
  • Le Model est la couche métier de cette architecture, elle s’occupe de l’accès au données.
  • La vue est le code HTML qui va afficher le résultat voulut.

Nous reviendrons sur ces 3 dossiers un peu plus tard dans le billet.

Le fichier index, la base de votre application

A la racine, vous devez ajouter un fichier index.php, qui va démarrer le framework et un fichier .htaccess qui va réécrire vos adresse.

Voici ce que vous devez mettre dans la fichier .htaccess :

RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

Et voila le code de l’index.php commenté :

 // On met le rapport d'erreurs pour afficher toutes les erreurs
error_reporting(E_ALL|E_STRICT);
date_default_timezone_set('Europe/Paris'); // On met un timezone par défaut

// On change la variable de php des chemins d'inclusions
// On met le dossier library (tous les éléments de Zend) et le dossier des models
set_include_path('.'
    . PATH_SEPARATOR . './library'
    . PATH_SEPARATOR . './application/models/'
    . PATH_SEPARATOR . get_include_path());

// Chargement de la classe de chargement de classe
include "Zend/Loader.php";

// Méthode magique de PHP5 et implémentation personnel qui permet de
// charger les classes que le script a besoin pour fonctionner.
function __autoload($fonction){
	Zend_Loader::loadClass($fonction);
}

try{
	// On lance le framework
        // On prend une instance du controlleur frontal
	$frontController = Zend_Controller_Front::getInstance();
	$frontController->throwExceptions(true); // On affiche les erreurs
        // On spécifie le répertoire ou sont stocké vos classes de controlleurs
	$frontController->setControllerDirectory('./application/controllers');

	// On démarre !
	$frontController->dispatch();

}catch (Exception $e){
        // Si on a une erreur (exception), on l'affiche
	echo $e -> getMessage();
}

Dans le dossier application, j’ai ajouter 2 fichiers, un .htaccess qui interdit de visiter ce dossier et un fichier config.ini qui contient les informations générales de mon application comme les informations de connexion à la base de donnée.

MVC, comment ça marche ?

Approchons nous maintenant sur le MVC de Zend et l’organisation des classes.

Le MVC se décompose en module (nom de controlleur; par exemple index) et en action (nom d’une méthode du controlleur; par exemple indexAction).

Le classes du controlleur doivent porter le même nom que la page que vous voulez créer; par exemple, vous voulez créer une page Index (www.votresite.com/index), le controlleur se nommera IndexController.php et le voici un exemple de code (commenté) :

// La class IndexController pour le module Index
// qui étend de la classe de base de controlleur
class IndexController extends Zend_Controller_Action {

	function indexAction(){ // On crée la méthode de la page index
		$this -> view -> numero = 1; // On assigne une variable à la vue
	}
}

Le controlleur effectue toutes les actions logique en faisant appelle au model ou au classes intégré à Zend.

Le fichier vue doit se trouver dans le repertoire application/views/scripts/nomDuControlleur(ici index)/nomDeLaction.phtml(ici index.phtml).

Voici le code du fichier index/index.phtml :

 

< ?php echo $this -> numero; ?>

Prenons 2 exemple simple : deux controlleurs (IndexController et ContactController) qui ont 2 méthode chacun (indexAction et sendAction).

Pour accéder à la page index du module index on notera : http://www.monsite.com/ et c’est tout ! ou alors http://www.monsite.com/index/index ce qui n’est pas optimisé.

Pour accéder à la page send du module index on notera : http://www.monsite.com/index/send.

Pour accéder à la page send du module contact on notera : http://www.monsite.com/contact/send.

Enfin pour accéder à la page index du module contact, on notera : http://www.monsite.com/contact.

Efficace non?

Le model est une classe que vous nommé comme vous voulez et qui effectue des actions spécifiques. Par exemples, une classes modèles nommé commentaire peut très simplement faire des requêtes sur la base de donnée ( un billet suivra sur les modèles et les accès aux données).


Mots-clés : Zend, Framework, Orienté Objet, PHP