Quelques personnes me demandent toujours des bouts de code afin de voir comment fonctionne le framework Zend, comment on fait pour avoir plusieurs controllers, modules, views, … Pourtant, la plupart des tutoriels fournis sur le site officiel et sur certains sites de développeurs sont amplement suffisants.

Je vais donc revenir pas à par sur le fonctionnement et l’organisation du framework. Bien entendu, la partie Bootstrap sera omise, vu qu’un sujet le traite déjà sur mon site. Vous trouverez cet article ici.

Tout d’abord, vous devez savoir que je préfère travailler en module. Chaque module gère un cas d’utilisation de mon site et me permet ainsi une meilleure portabilité et une meilleure gestion de ceux-ci.

Voici donc l’organisation typique de mes projets. (ici vous avez l’organisation d’un de mes sites).

A l’intérieur, il y a 3 dossiers principaux :

Application : ce dossier contient toute la partie développement du site.

Library : ce dossier, qui est l’un des plus importants, va contenir le framework Zend ainsi que des bibliothèques annexes (html2pdf par exemple). – Public : ce dossier va contenir tous les fichiers publics du site (images, fichiers à télécharger, styles CSS, scripts JS, …) ainsi que notre fichier d’amorçage et notre fichier .htaccess.

Revenons aux modules qui se trouvent être la partie qui nous intéresse ici. Le dossier module va contenir les dossiers de chaque modules (news, article, …) et chacun de ces dossiers contient les dossiers suivants :

controllers : contient chacun des controllers du module. – Forms : contient chacun des formulaires du module (choix perso). – Models : contient chacun des models du module (les abstract table). – Views : contient toutes les vues, aides de vues et paginations du module.

Jusque là, c’est assez simple. Sachez tout de même qu’un module nommé default est automatiquement créé, il s’agit du module contenant le controller et l’action d’accueil du site. Chose importante, toutes les classes contenues dans ce module n’ont pas besoin d’avoir Default_ en début de nom (voir ci-dessous) et ce module n’a pas besoin de bootstrap.

Chaque module a besoin d’une règle particulière pour bien fonctionner. En effet, le framework doit savoir à quel module correspond le controller et dans quel dossier il est stocké.

Pour le dossier controllers, rien de plus simple, votre controller doit se présenter de la façon suivante :
class Blog_IndexController extends Zend_Controller_Action {
}

Pour les models et les formulaures par contre, c’est de cette forme ci :
class Blog_Forms_Blog extends Zend_Form {
}

class Blog_Models_Tables_ArticleBlog extends Zend_Db_Table_Abstract{
}

Tout ceci afin de permettre au framework de trouver vos fichiers. Les « _ » sont remplacés en interne par le caractère de séparation de dossier donc si votre formulaire s’appelle Blog_Forms_Blog, il sera compris de cette forme par Zend : blog/forms/Blog.php

Pour le moment je ne vous ai fait que l’introduction au fonctionnement et à la mise en place d’un projet. D’ici quelques jours je parlerai du lien entre le controller et la vue et nous mettrons ensuite en place un Layout afin d’avoir l’apparence globale de nos sites.