Utilisation
Pour des raisons de lisibilité et de maintenabilité, il est
préférable de séparer le contenu en fichiers thématiques (par
exemple, les données contenant les paramètres de connexion à une
base de données).
On utilisera alors les fonctions
require
et
include
pour faire appel au contenu à utiliser. Il s'agit virtuellement
d'une copie des données de la ressource appelée à l'endroit de
l'appel.
La différence entre ces fonctions est que
require
n'évalue qu'une fois l'appel et comporte un caractère obligatoire
(et donc une erreur en cas d'échec). La fontion
include
évalue dynamiquement le fichier à cahque appel.
Ces fonctions comportent chacune une variante permettant de limiter
le risque de boucle lorsque les fichiers inclus appelent eux-même
d'autres fichiers. On peut donc utiliser
include_once
et
require_once
.
Exemple de mise en oeuvre
Définition
common/footer.php
Simple pied de page ne contenant que de l'HTML.<!-- Pied de page --> <footer> <nav> <ul> <li><a href="#logo">haut de page</a></li> </ul> </nav> </footer> </body> </html>
02/menu.php
Menu qui créé les liens de navigation à partir d'un tableau associatif de liens.<?php $navigation = array('Google'=>'http://www.google.fr', 'Wikipedia'=>'http://fr.wikipedia.org'); ?>
common/header.php
Entête du fichier.<!doctype html> <html lang="fr"> <head> <meta charset="utf-8" /> <title><?php echo $titre ?></title> <?php $style = "../../../css/alsa.css"; echo "<link rel=\"stylesheet\" href=\"$style\" type=\"text/css\" />"; ?> </head> <body> <!-- Entete --> <header> <h1><?php echo $titre ?></h1> </header> <?php include("menu.php"); if(isset($navigation)) { echo "<!-- Navigation -->\n<nav><ul>\n"; foreach ($navigation as $titreLien => $lien) { echo "<li><a href=\"$lien\" title=\"$titreLien\">$titreLien</a></li>\n"; } echo "</ul></nav>\n"; } ?>
02/index.php
Fichier principal. Contient les valeurs et les appels aux autres ressources.<?php $titre = "Exemple de navigation"; include('../common/header.php'); echo '<section><header><h2>Contenu spécifique</h2></header>Contenu propre à la page.</section><section><header><h2>Exercice avancé</h2></header><a href="posts.php">Liste d\'articles</a></section>'; include('../common/footer.php'); ?>