Leçon 9 / 12
Leçon 09 · Partie 2 — Aller plus loin

Inclure des fichiers

Le problème du copier-coller

Site avec 20 pages. Même menu partout. Tu l'as copié-collé 20 fois.

Tu veux ajouter un lien ? Tu ouvres 20 fichiers. Tu en oublies un. Le menu est incohérent. Cauchemar.

C'est ce qu'include résout. Tu inclus un fichier commun. Une seule modification, toutes les pages sont à jour.

include — insérer un fichier

include colle le contenu d'un autre fichier à l'endroit de l'instruction. PHP l'exécute et continue.

Exemple : deux fichiers partagés — l'en-tête et le pied de page.

includes/header.php
<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8">
  <title><?= $titre ?? 'Mon site' ?></title>
</head>
<body>
<nav>
  <a href="/">Accueil</a>
  <a href="/blog">Blog</a>
  <a href="/contact">Contact</a>
</nav>

<?= $titre ?? 'Mon site' ?> : si tu définis $titre avant d'inclure le header, il utilise ce titre. Sinon, "Mon site" par défaut.

includes/footer.php
<footer>
  <p>© 2026 Mon site — Tous droits réservés</p>
</footer>
</body>
</html>

Et voilà comment on les utilise dans chaque page :

index.php
<?php
$titre = "Accueil — Mon site"; // personnalise le titre de l'onglet
include "includes/header.php"; // insère tout le header ici
?>

<main>
  <h1>Bienvenue sur mon site !</h1>
  <p>Contenu de la page d'accueil...</p>
</main>

<?php include "includes/footer.php"; ?>

PHP rencontre include, colle le contenu du fichier, puis continue. Comme si tout était dans un seul fichier, mais bien organisé.

require — "indispensable ou rien"

require fonctionne comme include avec une différence clé si le fichier manque :

  • include → avertissement, PHP continue.
  • require → erreur fatale, PHP s'arrête.

Utilise require pour les fichiers indispensables. Si le fichier de config manque, continuer n'a aucun sens.

PHP
require "config.php";       // si absent → erreur fatale, tout s'arrête
include "includes/ads.php"; // si absent → avertissement, mais le site continue

include_once et require_once

Ces variantes incluent le fichier une seule fois maximum. Appelle require_once deux fois ? PHP l'inclut la première fois et ignore la deuxième.

Pourquoi ? Si un fichier définit des fonctions et qu'on l'inclut deux fois, PHP plante avec "Cannot redeclare function...".

PHP
require_once "fonctions.php";  // inclus la première fois
require_once "fonctions.php";  // ignoré silencieusement — déjà fait

Règle pratique : require_once pour les fichiers de fonctions et config. include pour les morceaux HTML (header, footer).

Le fichier de configuration — exemple concret

Usage classique : tout regrouper dans un config.php. Base de données, constantes, options du site — au même endroit.

config.php
<?php
// define() crée une constante — une valeur qui ne peut pas changer
// Contrairement aux variables, les constantes n'ont pas de $
define("DB_HOST", "localhost");
define("DB_NAME", "monsite");
define("DB_USER", "root");
define("DB_PASS", "motdepasse");
define("NOM_SITE", "Mon Super Site");
index.php
<?php
require_once "config.php";

// Maintenant toutes les constantes sont disponibles partout
echo "Bienvenue sur " . NOM_SITE;
// Bienvenue sur Mon Super Site

Tu changes de base de données ? Modifie juste config.php. Toutes les pages sont à jour automatiquement.

La structure typique d'un projet PHP

Structure standard d'un vrai projet PHP :

Structure du projet
mon-site/
├── config.php         ← connexion BDD, constantes globales
├── fonctions.php      ← tes fonctions réutilisables
├── includes/
│   ├── header.php     ← nav + balise HTML d'en-tête
│   └── footer.php     ← pied de page + fermeture HTML
├── index.php          ← page d'accueil
├── blog.php           ← liste des articles
└── contact.php        ← formulaire de contact

Chaque page commence par require_once "config.php" et include "includes/header.php". Elle finit par include "includes/footer.php". Structure cohérente, code partagé, maintenance simple.

// À retenir
  • include → insère le contenu d'un fichier. Si le fichier est absent : avertissement mais le script continue.
  • require → même chose, mais si le fichier est absent : erreur fatale, tout s'arrête.
  • include_once / require_once → n'inclut le fichier qu'une seule fois, même si l'instruction est appelée plusieurs fois.
  • Utilise require_once pour la config et les fonctions partagées.
  • Utilise include pour les morceaux de HTML (header, footer).
  • Un fichier inclus a accès aux variables du fichier qui l'inclut.