Factorisation
Intérêt
Lorsque vous réalisez un site Internet, la plupart de vos pages contiennent une base commune. Les mêmes entêtes, pied de pages, menus, connexion...
Pour simplifier votre programmation, le PHP permet d'inclure dans vos pages des fichiers extérieurs.
Vous réalisez un fichier pied de page et vous pouvez ainsi l'inclure dans toutes vos pages.
Le jour où vous désirez modifier vos pieds de page, vous n'avez qu'un seul fichier à modifier et non pas l'ensemble de votre site.
Fondamental : Principe
Pour intégrer le contenu d'un fichier dans un autre fichier, on utilise l'instruction require.
Prenons un exemple :
fichier exemple.php
<html lang="fr">
<head>
<meta charset="UTF-8" />
</head>
<body>
<header>
je suis l'entête
</header>
<section>
<h1>Bienvenue sur le site du TP</h1>
</section>
<footer>
je suis le pied de page
</footer>
</body>
</html>
Découpons l'entête et le pied de page dans de deux fichiers :
fichier entete.php :
<header>
je suis l'entête
</header>
fichier pied.php :
<footer>
je suis le pied de page
</footer>
Modification du fichier exemple.php
<html lang="fr">
<head>
<meta charset="UTF-8" />
</head>
<body>
require 'entete.php';
<section>
<h1>Bienvenue sur le site du TP</h1>
</section>
require 'pied.php';
</body>
</html>
L'instruction require fonctionne comme un copier/coller d'un fichier dans un autre.
Remarque :
Dans notre exemple, le contenu des fichiers entete.php et pied.php est très court. Mais, il pourrait être plus important.
L'intérêt réside, dans le fait que les fichiers pourraient servir à plusieurs pages. En cas de modification de l'entête seul le fichier entete.php est à modifier.
Exemple de deuxième fichier exemple2.php
<html lang="fr">
<head>
<meta charset="UTF-8" />
</head>
<body>
require 'entete.php';
<section>
<h1>Je suis une deuxième page</h1>
</section>
require 'pied.php';
</body>
</html>
Complément : require_once
L'instruction require_once permet d'éviter d'insérer un fichier plusieurs fois.
require_once 'entete.php'
require_once 'entete.php'
Dans cet exemple, l'entête ne serait inséré qu'une seule fois malgré les deux lignes.