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 :
- /
- actions
- home.php
- blocks
- banner.php
- nodecontent.php
- includes
- aliases.inc
- db.inc
- includes.inc
- settings.inc
- strings.inc
- layouts
- standard.phtml
- library
- bootstrap.php
- engine.php
- head.php
- locale.php
- translate.php
- models
- node.inc
- views
- banner.phtml
- head.phtml
- nodecontent.phtml
- en
- bannermenu.phtml
- footer.phtml
- home.phtml
- logo.phtml
- fr
- bannermenu.phtml
- footer.phtml
- home.phtml
- logo.phtml
- actions
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