Pages

Date 7 octobre 2012

Jobeet ZF2 - Jour 1 - Démarrage du projet

Chaque chapitre (ou jour) sera l'occasion d'apprendre Zend Framework 2 (ZF2) en codant un vrai site, de A à Z. Un cas concret, un peu poussé (ce n'est pas le tutoriel d'un n-ième "blog"), sera plus explicite que quelques exemples parsemés par-ci par-là.
Nous allons installer dans un premier temps un squelette ZF2



Prérequis

Dans un premier temps, vous avez besoin d'un environnement de développement comprenant:
  • un serveur Web (Apache par exemple)
  • PHP 5.3.3 ou supérieur
  • une base de données (mysql, postgresql)
  • Git
  • une bière (à consommer avec modération) un café
De nombreuses ressources existent sur internet pour mettre en place un tel environnement, je n'aborderais donc pas ce point dans ce tutoriel

Pour ma part, voici mon environnement de développement:
  • Debian 6 "Squeeze"
  • Apache 2.2.16
  • PHP 5.3.17
  • MySQL 5.5.28

Installation du squelette ZendSkeletonApplication

Pour commencer on va récupérer le squelette d’application standard Zend. On fait donc un clone du dépôt via GIT dans le répertoire de notre projet. (pour moi, dans /home/project/jobeet)

git clone --recursive https://github.com/zendframework/ZendSkeletonApplication.git ./

Je créé ensuite un lien symbolique jobeet dans /var/www (qui pointera sur /home/project/jobeet/public)

ln -s /home/project/jobeet/public/ /var/www/jobeet

Nous devons maintenant créer notre hôte virtuel pour l'application afin que http://jobeet.localhost pointe sur le fichier index.php dans le répertoire /var/www/jobeet/


<VirtualHost *:80>
    ServerName jobeet.lxc
    DocumentRoot /var/www/jobeet
    # This should be omitted in the production environment
    SetEnv APPLICATION_ENV development
 
    <Directory "/var/www/jobeet">
        Options -Indexes -MultiViews +FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all

        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^.*$ /index.php [NC,L]
</Directory>
</VirtualHost>

La section en gras active la ré-écriture d'URL. Le contenu provient du fichier .htaccess présent dans le repertoire public/ de l'application. Vous pouvez maintenant supprimer ce fichier .htaccess.

Si l'installation a fonctionné, vous devriez voir ça dans votre navigateur (http://jobeet.localhost)
Page d'accueil du ZF2
Installation OK
Voyons un peu la structure du projet ainsi créé:
Liste des répertoire de l'application ZF2

  • - config: Ce répertoire contient tous nos fichiers de configuration
    • application.config.php : Chargement des modules de notre applications
    • autoload/*.php : Fichier des configurations spécifique à l'environnement (database.local.php, database.global.php..), ou lié à un module
  • - data: Ce répertoire va contenir toutes les "écritures" de l'application (cache, logs, ...)
  • - module: Nos différents modules
  • - public: Toutes les ressources "publiques" (les images, les scripts javascript, les feuilles de style, ...)
    • index.php: L'entrée de toute application ZF2
  • - vendor: Contient toutes les librairies externes


Installation de ZendDeveloperTools (optionnel)

Il s'agit d'un module ZF2 destiné au debuggage de l'application
Une excellente source pour l'installation du ZendDeveloperTools pour ZF2

PS: Le tuto demande, lors de l'installation deBjyProfiler, de modifier le fichier de configuration de la base de données. J'ai du, pour cela, créer un fichier database.local.php dans le repertoire config/autoload


Installation de PHPUnit (optionnel)

Je ne parlerais pas dans ce cours de Développement Dirigé par les Tests (TDD pour Test-Driven Development): ce n'est pas le but de ces cours, et de nombreuses ressources sont présentes sur internet.
Mais je souhaiterais vous montrer comment Zend Framework et PHPUnit cohabitent, pour tester quelques-un de nos développements. Dans les prochains tutoriaux, les sections traitants des tests unitaires pourront être laissé de coté si cela ne vous intéresse pas, ou si vous êtes déjà un cador des tests unitaires (ce que je suis très loin d'être): cela n'aura pas d'incidence sur la suite des tutoriaux :-)

Voyons rapidement comment installer PHPUnit:
pear channel-discover pear.phpunit.de
pear channel-discover pear.symfony.com
pear install phpunit/PHPUnit


Nous avons maintenant un squelette d'application ZF2 fonctionnelle, ainsi qu'une barre de debug.

Vous pouvez récupérer les sources sur mon compte Github

10 commentaires:
  1. Bonjour,
    Je trouve ton idée plutôt pas mal.
    Cependant, je t'invite dans ton virtualhost à remplacer :
    AllowOverride All
    par :
    AllowOverride None
    Et inclure le contenu de ton fichier .htaccess directement dans ton virtualhost.

    Je sais très bien que dans la documentation c'est comme tu l'as fais, mais il y a un inconvénient à laisser ainsi, c'est de se retourver avec des .htaccess à plusieurs endroits.
    Une bonne pratique est de tout centraliser à un seul et même endroit c'est à dire au niveau du virtualhost

    RépondreSupprimer
    Réponses
    1. Oui, effectivement, je vais corriger ça.
      C'est ce que je fais d'habitude sur mes projets
      C'est un oubli de ma part :-)

      Je vais corriger ça

      Supprimer
  2. Hello : suggestion, une machine virtuelle (virtual box) avec le tout d'installé .... (ou pas)
    ++

    RépondreSupprimer
    Réponses
    1. Ça peut effectivement être intéressant, pour démarrer plus rapidement.
      Je vais y réfléchir.

      Supprimer
  3. Je ne suis pas fan de cette option.
    Car cela mâche d'avantage le boulot et l'install et la configuration doivent être réalisées par par le développeur.
    Du comme Romain procède permet d'en apprendre plus.

    PS: Romain, remplace Indexes par -Indexes dans les options, sinon nous pourrons lister le contenu des dossier public

    RépondreSupprimer
    Réponses
    1. Bien vu Loïc :-)

      J'ai corrigé et améliorer le vhost (-Indexes -MultiViews +FollowSymLinks)
      Ainsi, le virtualhost se rapproche plus de ce que l'on pourrait avoir en production

      Supprimer
  4. Bonjour Romain,

    Je pense qu'il serait bien de mettre un lien en fin d'article vers l'article suivant pour faciliter la navigation qu'en penses tu ?

    ++
    Fred

    RépondreSupprimer
    Réponses
    1. Bonjour Frédéric,

      Effectivement, ca pourrait être pas mal. Je vais rajouter ça rapidement :-)

      Supprimer
  5. Merci milles fois pour tes sources, je viens de perdre 2 jours avec les tutos officels et traduits mais rien d'épuré, concis et fonctionnel. Avec tes sources en une demi-journée c'était réglé. J'ai essayé de coupler avec leur exemple d'album et à part un problème sur l'édition tout tourne.
    Merci encore

    RépondreSupprimer
    Réponses
    1. Bonsoir,
      Content d'avoir pu aider :-)
      C'est vrai qu'il n'y a pas encore beaucoup de ressources disponibles sur ZF2 (hors tutos officiels). C'est d'ailleurs pour cela que je me suis décidé à ouvrir ce blog.

      J'ai un petit problème par contre: je n'arrive pas a faire fonctionner correctement ZendDeveloperTools.
      J'ai vu des captures d'écran où l'on pouvait voir les requêtes SQL executées (bon, c'était avec Doctrine) et moi, je ne vois que le nombre de requêtes...Si tu as installé le module et que tu arrives à le paramétrer correctement, je suis preneur

      Supprimer