To content | To menu | To search

Tag - arborescence

Entries feed - Comments feed

Friday 13 October 2006

Bootstrap CLI

Nous avons parcouru dernièrement la création du bootstrap HTTP qui sert de socle à une application utilisant le Zend Framework. Le même principe peut s'appliquer aux scripts CLI, mais comme les besoins sont fondamentalements différents, l'implémentation sera elle aussi complètement différente. Nous viserons les objectifs suivants:

  1. Ne pas être obligé d'executer le bootstrap en ligne de commande
  2. Simplifier au maximum l'écriture ultérieure des scripts CLI
  3. Définir un jeu d'options de ligne de commande obligatoire
  4. Mettre en place un environnement d'execution

Continue reading...

Saturday 16 September 2006

Débuter un projet: un brin d'organisation

Architecture des dossiers

Commençons par le commencement: le stockage des fichiers. Pour ne pas trébucher sur la longue route que représente l'accomplissement d'un projet, il convient de bien s'organiser dès le début, et savoir précisément où stocker et trouver les choses est une bonne chose. Nous allons donc nous baser sur les recommandations de Zend à ce sujet:

monprojet/
     app/
          controllers/
          models/
          views/
     library/
     www/

A partir de là, on peut faire évoluer un peu. J'ai personellement rajouté un répertoire dist/, qui contient les scripts nécessaire à la distribution de mon application (dump des bases SQL par exemple), et cet article de Rob parle de répertoires comme scripts/ (pour contenir les scripts cron par exemple) et tmp/ (à toutes fins utiles).

Enfin, notons l'utilité d'un répertoire library/ext/ ou assimilé, comme expliqué ici.

Définir ses controlleurs et ses vues

Première question a se poser: qu'est-ce qu'un controlleur ? Un controlleur, c'est tout simplement une entité qui va s'occuper de traiter une requête que reçoit l'application. Dans le Zend Framework, les controlleurs possèdent des Actions (sous formes de méthodes), qui permettent d'avoir des URL telles que:

http://example.com/foo/bar/

Dans un tel cas de figure, Zend Framework ira chercher la méthode barAction du controlleur fooController. On voit dès l'ors l'interet de bien définir nos besoins en termes de controlleurs dès maintenant, puisque c'est cela qui définira toute l'architecture de l'application. La marche à suivre est la suivante:

  • Lister toutes les fonctionnalitées de l'application
  • Les regrouper logiquement
  • Traduire tout ça en termes de controlleurs et d'action

Prenons l'exemple typique d'un portail d'actualité. Voici quelques unes des actions que nous serons susceptibles de proposer:

  • Ajouter une news
  • Lister des news (action par défaut)
  • Voir les détails d'une news
  • Ajouter un commentaire

Ce qui se traduit par:

  • controlleur News
    • action Ajouter (url: news/ajouter/)
    • action Lister (url: news/lister/)
    • action Voir (url: news/voir/id/$id)
  • controlleur Commentaires
    • action Ajouter (url: commentaires/ajouter/news/$id)

Cela nous permet donc de prévoir l'arborescence suivante:

app/
        controllers/
                CommentairesController.php
                IndexController.php
                NewsController.php
        views/
                Commentaires/
                        ajouter.php
                Index/
                        index.php
                News/
                        ajouter.php
                        lister.php
                        voir.php

Voilà pour la théorie, pour la pratique, il faut mettre en place un environnement d'execution dans lequel on pourra déployer toutes la puissance du Zend Framework, c'est ce que nous verrons la prochaine fois :-)