Composant
Afin d’éviter les répétitions et de faciliter la maintenance du site, il est possible de factoriser certaines portions de code HTML.
Une simple inclusion avec require permet de réutiliser un fichier (par exemple un header ou un footer). Cependant, le fichier inclus dépend souvent des variables définies dans la page principale : il partage le même contexte et utilise directement les variables disponibles.
Pour aller plus loin, on peut adopter une logique de composant.
Un composant consiste à placer dans un fichier séparé une structure HTML générique, puis à remplacer les éléments variables par des données transmises explicitement (par exemple sous la forme d’un tableau).
Dans le fichier principal, on définit d’abord les données nécessaires au composant (contenu, liens, attributs, etc.), puis on inclut le fichier avec require. Le composant n’utilise alors que les données prévues pour lui, ce qui le rend plus autonome, plus lisible et moins dépendant du contexte global.
Cette approche permet :
de centraliser la structure HTML commune ;
de rendre les données utilisées plus explicites ;
de modifier le composant à un seul endroit et de voir les changements s’appliquer partout où il est utilisé ;
de réutiliser plus facilement ce composant dans d’autres pages, d’autres projets ou d’autres contextes, sans dépendre des variables propres au site d’origine.
Nous placerons nos composants dans le dossier components.
Méthode : components/card.php
Nous créons un composant appelé card, qui permettra d’afficher les données d’un utilisateur sous forme de carte.
<figure class="card">
<img src='= $card['src'] ' alt='= $card['alt'] ' />
<figcaption>
= $card['figcaption']
</figcaption>
</figure>
La variable $card est un tableau associatif PHP qui contient les données nécessaires à l’affichage d’une carte.
Exemple :
$card = [
'src' => 'images/photos/1_aule.gif',
'alt' => 'Photo de Aule Lucie',
'figcaption' => 'Aule Lucie – 45 ans'
];
Méthode : utilisateur/index.php
...
<ul class="utilisateur-list">
foreach ($listeUtilisateurs as $utilisateur):
<li>
$card = [
'src' => $utilisateur['photo'],
'alt' => "photo de {$utilisateur['nom']} {$utilisateur['prenom']}",
'figcaption' => "{$utilisateur['nom']} {$utilisateur['prenom']} - {$utilisateur['age']} ans"
];
require("$page_base/components/card.php");
</li>
endforeach;
</ul>
...
Dans cet exemple, la variable $card est construite à partir des informations contenues dans la variable $utilisateur.
Les données de l’utilisateur (photo, nom, prénom, âge) sont utilisées pour renseigner les différentes valeurs attendues par le composant.
Une fois la variable $card définie, le composant card est ajouté à la page à l’aide de l’instruction require.
Cette opération est répétée pour chaque utilisateur grâce à la boucle foreach, ce qui permet d’afficher une liste de cartes sans dupliquer le code HTML.