Voilà maintenant plusieurs mois que j’utilise le framework PHP Zend pour mes projets. Après une longue hésitation, principalement sur le facteur temps – combien d’heures, de jours, de semaines sont nécessaires à l’apprentissage d’un tel outil – et sur le choix du framework, j’ai décidé de commencer un nouveau projet avec Zend et ainsi voir ce qu’il en était. Programmant déjà en OOP le plus souvent avec le paradigme MVC, j’avais les bases nécessaires. Environ 2 mois ce sont donc écoulés maintenant et je peux dire que j’ai adopté l’approche ZF.
Ce billet existe à des milliers d’exemplaires sur le web, il parle de la mise en place du framework sur une machine de type *ix ou Windows, mais je pense que dans l’optique de futurs billets progressifs sur le sujet, mieux vaut commencer par le début ^.^
Téléchargement
La première chose à faire bien entendu est de télécharger le dit framework, depuis cette adresse : http://framework.zend.com/download/latest
Ce tutoriel ne parle pas de la version serveur complet Zend Server Community, mais bien de l’installation manuel du framework sur une machine (Linux, Mac ou Windows) disposant déjà d’un serveur Apache + PHP fonctionnel. A savoir que ZF s’utilise sans soucis avec tout type de serveur web + PHP, Nginx, Lighttpd, même IIS. Sur la page de téléchargement, il est possible de choisir entre la version Full ou Minimal, le second choix ne contient que les composants Zend, c’est donc suffisant pour tout projet ZF, la version Full inclut la documentation, des exemples, des librairies externes, et d’autres outils, cela peut donc être un choix judicieux pour débuter et s’inspirer d’exemples concrets.
Installation
Une fois le fichier tar.gz ou zip sur la machine, il faut le décompresser. Vous êtes libre de placer les fichiers ZF où vous le désirez, en ce qui me concerne, je décompresse l’archive hors de la racine du serveur web, sous Linux (Fedora/CentOS) je le place sous /var/www/ZendFramework-1.11.11-minimal
, sous Windows/XAMPP sous C:\xampp\ZendFramework-1.11.11-minimal
.
Une fois ceci fait, il faut que PHP ait accès aux classes du framework, pour ce faire il faut ajouter le chemin de la bibliothèque – le dossier library/
– à l’include_path
de PHP. Sous Linux, on édite le fichier de configuration de PHP situé sous /etc/php.ini
:
; UNIX: "/path1:/path2" include_path = ".:/php/includes:/var/www/ZendFramework-1.11.11-minimal/library"
Sous Windows XAMPP, il se situe sous C:\xampp\php\php.ini
; Windows: "\path1;\path2" include_path = ".;C:\xampp\ZendFramework-1.11.11-minimal\library"
On redémarre le serveur web depuis le panneau de controle de XAMPP sous Windows, ou sous Fedora/CentOS en invoquant systemd :
# systemctl reload httpd.service
L’outil en ligne de commande
Dans la dossier bin/
de l’installation de Zend Framework se trouvent 3 fichiers scripts zf.sh
, zf.bat
et zf.php
, le premier pour Linux et le deuxième pour Windows. Ces scripts sont des aides à la création et à l’évolution d’un projet ZF, ce n’est pas du tout obligatoire de les utiliser, mais ils permettent de s’affranchir de la création et de l’écriture de beaucoup de lignes de code rébarbatives. Ceci sera abordé plus loin.
Pour utiliser ces outils, plusieurs choix sont possibles, soit on reste comme ça et lorsque l’on veut utiliser les commandes zf
on écrit le chemin complet vers le script en question, ou alors on ajoute le chemin vers les scripts dans le PATH du système. On peut également déplacer les fichiers dans un dossier du systèmes inclut dans le PATH ou créer des liens symboliques vers le dossier bin/
. Je n’expliquerai pas cela en détail ici, la documentation de ZF en parle assez en détail ici : http://framework.zend.com/manual/1.11/en/zend.tool.framework.clitool.html
Une fois arrivé là, on peut vérifier le bon fonctionnement du framework en ouvrant un terminal et en essayant :
C:\Users\werk>zf.bat show version Zend Framework Version: 1.11.11
Sous Linux :
$ zf.sh show version Zend Framework Version: 1.11.11
Tout fonctionne.
Fonctionnement de la commande zf
Ce billet a pour but d’aider à l’installation du Zend Framework, je ne vais pas parler aujourd’hui de la mise en route d’un projet qui fera l’objet d’un prochain billet. Mais je veux juste montrer l’utilité de l’outil zf
en expliquant brièvement l’architecture d’un projet MVC avec le framework Zend :
Dans l’idéal – cet idéal étant déjà un choix de programmation parmis d’autres – voici l’arborescence d’un projet Zend :
monprojet/ |-- application | |-- Bootstrap.php | |-- configs | | `-- application.ini | |-- controllers | | |-- ErrorController.php | | `-- IndexController.php | |-- models | `-- views | |-- helpers | `-- scripts | |-- error | | `-- error.phtml | `-- index | `-- index.phtml |-- docs | `-- README.txt |-- library |-- public | `-- index.php `-- tests |-- application | `-- controllers | `-- IndexControllerTest.php |-- bootstrap.php |-- library `-- phpunit.xml
En gros, ceci est l’architecture de base pour commencer, cela représente un petit peu de temps si on veut créer ces répertoires et fichiers à la main. C’est là que l’outil zf
entre en jeu. Voyons un peu. Placez-vous à la racine de ce que sera votre projet, on admet que le projet s’appellera monprojet, la racine du site web est /var/www/html
:
# cd /var/www/html # zf.sh create project monprojet Creating project at /var/www/html/monprojet Note: This command created a web project, for more information setting up your VHOST, please see docs/README Testing Note: PHPUnit was not found in your include_path, therefore no testing actions will be created.
Le script nous dit qu’un répertoire monprojet
a été crée, allons voir. En effet, on s’aperçoit de la présence du nouveau répertoire avec toute l’arborescence citée plus haut, sympa non? Sans rentrer dans les détails, imaginons que dans le futur projet, je veux ajouter un nouveau controlleur moncontrolleur
, la commande zf create controller
va me le faire tout seul. On commence cette fois par entrer dans le répertoire du projet, seul la création d’un nouveau projet se fait depuis la racine (logique) :
# cd monprojet # zf create controller moncontrolleur Note: PHPUnit is required in order to generate controller test stubs. Note: The canonical controller name that is used with other providers is "Moncontrolleur"; not "moncontrolleur" as supplied Creating a controller at /var/www/html/monprojet/application/controllers/MoncontrolleurController.php Creating an index action method in controller Moncontrolleur Creating a view script for the index action method at /var/www/html/monprojet/application/views/scripts/moncontrolleur/index.phtml Updating project profile '/var/www/html/monprojet/.zfproject.xml'
Elle va m’ajouter le fichier du controlleur en question avec le squelette de sa classe et les fichiers de vues associés. Vous pouvez essayer. On vérifie avec un tree
:
monprojet/ |-- application | |-- Bootstrap.php | |-- configs | | `-- application.ini | |-- controllers | | |-- ErrorController.php | | |-- IndexController.php | | `-- MoncontrolleurController.php | |-- models | `-- views | |-- helpers | `-- scripts | |-- error | | `-- error.phtml | |-- index | | `-- index.phtml | `-- moncontrolleur | `-- index.phtml |-- docs | `-- README.txt |-- library |-- public | `-- index.php `-- tests |-- application | `-- controllers | `-- IndexControllerTest.php |-- bootstrap.php |-- library `-- phpunit.xml
On voit le nouveau fichier de la classe controlleur MoncontrolleurController.php
:
class MoncontrolleurController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ } public function indexAction() { // action body } }
Ainsi que la vue d’index associée moncontrolleur/index.phtml
. Il est également indiqué que le profil du projet .zfproject.xml
a été mis à jour.
Pour terminer
Voici un billet regroupant les étapes de l’installation du Zend Framework pour commencer un projet MVC (ou non) avec cette bibliothèque complète et maintenant éprouvée. La prochaine étape sera la création d’un projet ZF.
lien de votre approchepour la creation d’un project zf svp :)
Désolé Zioudi, je ne comprends pas ta question ;)
Dans la version minimale du zend framework 1.11.11, on n’a pas le ZendX. Ou peut-on le trouver et le palcer dans le library pour pouvoir executer des instructions jquery. Merci, je ne suis qu’un debutant
Il faut que tu télécharges la version full et tu verras ZendX se trouve sous extras/library/ZendX.