Débuter un projet: un brin d'organisation
By Geoffrey on Saturday 16 September 2006, 13:05 - Coding - Permalink
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)
- action Ajouter (url:
- controlleur Commentaires
- action Ajouter (url:
commentaires/ajouter/news/$id)
- action Ajouter (url:
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 :-)
Comments