Previous Next
Choix du "action" dans les forms Référence rapide de la syntaxe PHP

Organisation des fichiers PHP

Antoine Beaupré

Introduction

Pour fins de clarté, nous distinguerons trois types de fichiers PHP ici.

  • Les librairies

    Ce sont des fichiers inclus par d'autres et qui n'éxecutent généralement aucun code mais définissent des fonctions et structures.

  • Les scripts

    Ce sont les fichiers qui font le travail. Ils appelent des fonctions et exécutent des instructions à partir des données fournies par un navigateur et interagissent avec l'usager.

  • Les "front-ends"

    Ce sont en majeure partie des fichiers HTML mais qui doivent avoir un côté dynamique. Souvent, les frontends ne feront qu'inclure les librairies ou les scripts, en ayant très peu ou pas de code PHP en soit afin de faciliter la maintenance de ces fichiers à la merci des graphistes.

Pour une approche commune

Généralement, nous avons eu 2 approches au fil du temps par rapport à l'élaboration logicielle dans les différents projets.

  • Broker

    Un broker inclus toutes les librairies nécessaires et exécute le bon script (qui peut être contenu dans le broker lui-même). Ceci a l'avantage de regrouper toutes les resources dans un même fichier et empêcher l'éparpillage. Mais cet avantage est aussi un gros désavantage: le Broker fini inévitablement par être très gros et il devient difficile de s'y repérer. Dans SDC, par exemple, il a fallu séparer le broker en 3 fichiers d'actions pour pouvoir démêler tout ça.

    Aussi, il y a un problème fondamentale avec la façon dont est choisie "l'action" qui détermine ce que le broker va *faire*, a priori. On est alors pris avec l'élaboration d'un schéma de "opcodes" où un code est associé à chaque action et ainsi est faite la sélection de la bonne action par le broker.

  • Scripts isolés

    D'une certaine façon une dégérescence du concept du broker, dans cette approche, chaque fonction du site est associée à un ou plusieurs scripts. Le login, par exemple, est encapsulé dans un script login.php. C'est comme si on avait divisé le broker en autant de parties qu'il a de fonctionalités, que l'on avait créé un fichier pour chaque fonctionalité et que l'on avait ensuite retiré le broker.

    Ceci a le désavantage que l'on a plein de scripts différents au lieu d'avoir tout sur le même toit, et que les différents formulaires doivent choisir le bon. Mais on a le même problème avec le broker: les bonnes actions doivent être choisie.

    Cette approche a l'avantage d'être beaucoup plus facilement extensible et permet l'orthogonalité entre les différentes composantes: un script ne peut pas polluer le "namespace" (espace de nommage selon le granddictionnaire.com :) des autres.

Je suggère donc l'approche des scripts isolés au lieu du broker.

La hiérarchie des fichiers

Traditionnellement, nous avons placé le code PHP dans un répertoire du même nom (php/, bien que le nom importe peu) au haut de la hiérarchie du projet. Les librairies sont toutes dans ce répertoire. Dans le répertoire php/bin, on retrouve les scripts isolés. Les "front-ends" de leur côté, se ramassent un peu partout dans le reste de la hiérarchie, selon les besoins et la logique graphique.

Formulaires et frontends

L'avantage du fonctionnement "frontends"/scripts est que l'on peut minimiser au maximum le code écrit dans les fichiers a priori HTML et déplacer tout ceci dans des scripts qui ne sont qu'inclus des frontends. Le module "amailer" dans alv0222/en/admin/amailer en est un très bon exemple. Issu de la branche AMAILER, le script php/bin/send_newsletter.php est inclus du fichier feedback.php, ce dernier gèrant l'affichage et contenant tout le volumineux code HTML. Le script send_newsletter se contente pour sa part d'envoyer du texte minimalement formatté, texte qui peut être formatté par les graphistes grâce aux styles et CSS.

Ainsi, les formulaires eux-mêmes doivent pointer vers les "frontends" et lesdits "frontends" doivent inclure les scripts isolés séparément.

La méthode d'inclusion (require vs include, include_path vs relatif) sort du cadre de ce document.

Previous Next
Choix du "action" dans les forms Référence rapide de la syntaxe PHP

Documentation generated on Tue, 11 Jan 2005 01:38:16 -0500 by phpDocumentor 1.3.0RC3