Présentation
Zend_Tool_Framework, Zend_Tool_Project et Zend_CodeGenerator sont trois composants du Zend Framework qui sont apparus dans sa version 1.8. Voyons ici comment les utiliser pour jeter les bases d’une application web.
Zend_Tool_Framework
Le composant Zend_Tool_Framework permet d’utiliser des générateurs de code afin d’apporter l’aspect « échafaudage » ou encore scaffolding qui manquait au framework, permettant de générer une bonne partie de la structure du projet via des lignes de commande avant de commencer à coder les aspects métiers.
Zend_Tool_Project
Ce composant étend les possibilités du précédent en apportant des fonctionnalités de maintenance d’un projet basé sur ZF, en particulier, la déclaration des ressources (base de données, fichiers, images, etc) et un ensemble de générateurs (contrôleur, actions, vues, modèles, etc).
Zend_CodeGenerator
Ce composant offre la possibilité de créer des générateurs de code en utilisant une interface orienté objet. Actuellement les classes fournies se limitent à la génération de code PHP.
Installer et configurer CLI Tool sur Ubuntu
CLI Tool est l’outil en ligne de commande qui permet d’utiliser Zend_Tool dans un terminal, installons et configurons celui-ci sur un système GNU/Linux (ici, Ubuntu 8.10) :
- Télécharger la dernière version de Zend Framework (ici 1.8.3 Minimal) ;
- Extraire l’archive dans un répertoire de votre choix ;
- Localiser l’include_path de PHP :
$ php -i |grep include_path include_path => .:/usr/share/php:/usr/share/pear => ...
- Copier la librairie Zend extraite dans l’installation de php :
$ sudo cp -R ~/ZendFramework-1.8.3-minimal/library/Zend /usr/share/php/
- Copier les scripts extraits dans l’installation de php :
$ sudo cp -R ~/ZendFramework-1.8.3-minimal/bin/zf.php /usr/share/php/ $ sudo cp -R ~/ZendFramework-1.8.3-minimal/bin/zf.sh /usr/share/php/
- Créer un lien symbolique vers le script shell:
$ sudo ln -s /usr/share/php/zf.sh /usr/bin/zf
Exécuter la commande suivante dans un terminal pour tester le succès de l’opération :
$ zf ?
Zend Framework Command Line Console Tool v1.8.3
Usage:
zf [--global-opts] action-name [--action-opts] provider-name ...Créer notre nouvelle application
Générer la structure du projet
Commençons par saisir la commande suivante afin de créer notre projet MyZendWebapp dans le répertoire /var/www/ :
$ cd /var/www/ $ zf create project MyZendWebapp Creating project at /var/www/MyZendWebapp
La structure générée est la suivante :
$ tree MyZendWebapp/
MyZendWebapp/
|-- application
| |-- Bootstrap.php
| |-- configs
| | `-- application.ini // les variables d'environnement
| |-- controllers
| | |-- ErrorController.php // le contrôleur traitant les erreurs
| | `-- IndexController.php // le contrôleur par défaut
| |-- models // nos futurs modèles de données
| `-- views // les vues de l'applications
| |-- helpers
| `-- scripts
| |-- error
| | `-- error.phtml // affichage d'une erreur
| `-- index
| `-- index.phtml // vue standard du contrôleur Index
|-- library // le framework Zend, ici vide car on utilise l'include_path PHP
|-- public
| `-- index.php // le point d'entrée unique de l'application
`-- tests
|-- application
| `-- bootstrap.php
|-- library
| `-- bootstrap.php
`-- phpunit.xml // fichier XML de déclaration des tests unitairesGardons à l’esprit que les composants Zend utilisés sont placés dans « /usr/share/php/Zend », dans le cas où nous voudrions déployer ou distribuer notre application, une solution serait de copier le répertoire Zend dans le répertoire « library » de notre projet.
Nous pouvons désormais consulter ce premier résultat en nous rendant à l’adresse « http://localhost/MyZendWebapp/public/index.php » :
Notons qu’il est aisé de mettre en place un virtualhost nommé Apache pour consulter notre application sur un domaine local du type http://my-zend-webapp.
Ajouter une action au contrôleur par défaut
Ajoutons ici une action hello au contrôleur Index :
$ cd /var/www/MyZendWebapp $ zf create action hello index Creating an action named hello inside controller at /var/www/MyZendWebapp /application/controllers/IndexController.php Updating project profile '/var/www/MyZendWebapp/.zfproject.xml' Creating a view script for the hello action method at /var/www/MyZendWebapp /application/views/scripts/index/hello.phtml Updating project profile '/var/www/MyZendWebapp/.zfproject.xml'
L’action générée dans IndexController.php est la suivante :
<?php class IndexController extends Zend_Controller_Action { // ... public function helloAction() { // action body } }
La vue correspondant à cette action :
<br /><br /><center>View script for controller <b>index</b> and script/action name <b>hello</b></center>
La vue est accessible à l’adresse « http://localhost/MyZendWebapp/public/index.php/index/hello » selon la convention « /nom_contrôleur/nom_action » :
Pour allez plus loin
Le script zf peut également être utilisé pour ajouter :
- un contrôleur :
zf create controller MonControleur
- une vue :
zf create MaVue MonControleur MonAction
- un module :
zf create MonModule
- un profile, un test, etc
Malheureusement, la génération de modèle de données n’est pas encore disponible (v1.8.3), espérons que cette fonctionnalité ne tardera pas trop.
Conclusion
Notons que bien que la génération de code proposée soit moins aboutie que celle fournie par le framework Symphony, elle sera complétée dans les releases à venir, permettant au développeur de concentrer ses efforts sur l’écriture du code métier plutôt que sur les tâches répétitives de structuration de l’application.
Enfin, ces composants apportent plus que de simples générateurs de code, ils donnent en effet la possibilité de conserver un ensemble cohérent tout au long de la vie du projet, de son initialisation à sa maintenance corrective ou applicative.
Nous avons terminé notre introduction aux composants Zend Tool et j’espère que cette lecture vous a donné envie de les découvrir plus en détail ou encore d’écrire vos propres générateurs
.
Ressources complémentaires
- Documentation du Zend_Tool_Framework

Ton article m’a énormément appris et m’a été d’une grande utilité.
Je t’en remercie, je vais pouvoir commencer mon projet sereinement
Ravi que ce billet ai l’effet escompté et surtout, bon courage pour ton projet !
Utile pour moi aussi .. Il me manquait le fait de placer fichiers, librairie Zend dans /usr/share/php et de lancer le script à partir de cet emplacement.
Thank’s a lot !!!
Merci, un bon tuto pour la mise en place du fw.
Merci infiniment pour ce très bon tuto qui ma aidé énormément.