2

Diagramme général

Le fichier .htaccess à la racine du site web définit un seul point d'entrée pour toutes les requêtes HTTP : index.php.

index.php initialise la constante ROOT_DIR, met en place le contexte du programme avec la fonction bootstrap puis exécute la requête en appelant la fonction dispatch.

bootstrap charge les fichiers de configuration settings.inc, config.inc et db.inc puis ouvre la connexion avec la base de données et démarre la session.

dispatch analyse l'URL de la requête pour en extraire la langue, l'action à exécuter et la liste des arguments de l'action. Le fichier aliases.inc associe une URL à une action. dispatch appelle la fonction run en lui passant le nom de l'action, la langue et la liste des arguments.

run charge et exécute le code de l'action demandée.

Une action contrôle la fabrication des différentes parties d'un document en appelant des blocs de construction ou des vues. Une action ou un bloc interagit avec le modèle de données à l'aide de fonctions spécifiques. Une action est généralement associée à une URL. Un bloc, jamais. Une action peut appeler une autre action. Un bloc peut être construit à l'aide d'autres blocs. Les vues peuvent dépendre de la langue ou pas. Certaines vues sont intégrées par la vue de l'action. Les autres sont directement transmises à la fonction layout.

Le document HTML complet retourné par le serveur HTTP est assemblé in fine par la fonction layout qui génère la balise <head> avec les paramètres collectés par la fonction head durant l'exécution de l'action et la balise <body> avec les vues qui sont passées en paramètres par l'action.

Organisation du code

Une action est implémentée par une fonction du même nom définie dans un fichier du même nom avec l'extension .php dans le dossier actions. EXEMPLE : L'action home est implémentée par la fonction home définie dans le fichier home.php dans le dossier actions. Une action est exécutée par la fonction run du moteur.

Un bloc est implémenté par une fonction du même nom définie dans un fichier du même nom avec l'extension .php dans le dossier blocks. EXEMPLE : Le bloc banner est implémenté par la fonction banner définie dans le fichier banner.php dans le dossier blocks. La contruction d'un bloc est réalisée par la fonction build du moteur.

Le fichier d'une action ou d'un bloc peut se trouver dans un sous-dossier. EXEMPLE : L'action error/notfound est codée par le fichier notfound.php dans le sous-dossier error du dossier actions.

Une vue est générée par un fichier du même nom avec l'extension .phtml directement dans le dossier views pour une vue qui ne dépend pas de la langue ou dans le sous-dossier correspondant à la langue pour une vue différente selon la langue. EXEMPLE : La vue home est générée par le fichier home.phtml dans le sous-dossier en ou fr du dossier views alors que la vue banner qui ne dépend pas de la langue est générée par le fichier banner.phtml qui se trouve directement dans le dossier views. La génération d'une vue est réalisée par la fonction view du moteur.

NOTE : Un fichier .phtml contient principalement du HTML amélioré avec du JavaScript et plus ou moins de PHP pour la formatage du contenu et des paramètres de la vue.

Le fichier d'une vue peut se trouver dans un sous-dossier. EXEMPLE : La vue error/notfound.phtml est générée par le fichier notfound.phtml dans le sous-dossier error du sous-dossier en ou fr du dossier views.

La génération du document HTML complet est réalisée par la fonction layout du moteur. Cette fonction est toujours appelée à la fin d'une action. Elle passe les paramètres accumulés par la fonction head et les éventuels messages de trace à une vue finale. Le fichier .phtml d'une vue finale est dans le dossier layouts. En général, un document complet est fabriqué par la vue standard mais utiliser d'autres vues pour générer des documents spécifiques avec des structures différentes est tout à fait commun.

Tous les fichiers de configuration inclus dans le code sont dans le dossier includes et ont une extension .inc.

Les fonctions des modèles de données sont codées dans les fichiers .inc du dossier models.

Exemple

Le traitement de l'action home, qui répond à une requête sur la page d'accueil d'un site web, va utiliser principalement les fichiers suivants :

  1. /
    1. actions
      1. home.php
    2. blocks
      1. banner.php
      2. nodecontent.php
    3. includes
      1. aliases.inc
      2. db.inc
      3. includes.inc
      4. settings.inc
      5. strings.inc
    4. layouts
      1. standard.phtml
    5. library
      1. bootstrap.php
      2. engine.php
      3. head.php
      4. locale.php
      5. translate.php
    6. models
      1. node.inc
    7. views
      1. banner.phtml
      2. head.phtml
      3. nodecontent.phtml
      4. en
        1. bannermenu.phtml
        2. footer.phtml
        3. home.phtml
        4. logo.phtml
      5. fr
        1. bannermenu.phtml
        2. footer.phtml
        3. home.phtml
        4. logo.phtml

Une requête à l'adresse /fr/accueil est redirigée par les directives du fichier .htaccess sur le point d'entrée index.php. index.php initialise le contexte avec la fonction bootstrap qui charge les fichiers de configuration settings.inc, config.inc et db.inc, puis démarre l'interprétation de la requête avec la fonction dispatch. dispatch détermine la langue de la requête puis trouve dans aliases.inc que l'URL accueil pour la langue fr correspond à l'action home. dispatch appelle la fonction run avec le nom de l'action et la langue en paramètres. run charge le code de la fonction home et l'appelle avec la langue en paramètre. La fonction home remplit l'en-tête du document avec les fonctions head et translate, construit la bannière, le corps et le pied-de-page de la page avec les blocs banner et nodecontent, la fonction node_get du modèle de données node et les vues home et footer. Le bloc banner assemble les vues logo et bannermenu. home assemble le document final avec la fonction layout et la vue finale standard et le retourne à la fonction run. run renvoie le document complet.

VOIR AUSSI

Les fichiers .htaccess et index.php, bootstrap, engine, head, translate

Commentaires

Pour ajouter un commentaire, cliquez ici.