Après PHP et HTML, on sait générer une page. Si index.php et catalogue.php répètent le même header et le même footer, on copie-colle. Mauvaise idée.
include et require insèrent un fichier dans un autre. Même rôle, gestion d’erreur différente. Les variantes _once évitent d’inclure deux fois. Comme dans la vidéo.
Pourquoi inclure un fichier ?
Deux pages : index.php et catalogue.php. Même titre, même menu, même footer. Seul le contenu du main change. Recopier header et footer partout : du temps perdu, et une modif à répéter N fois.
On extrait :
header.php: le<header>, le titre, les liens Accueil / Catalogue / Contact ;footer.php: le<footer>.
Chaque page n’écrit plus que ce qui change, et inclut le reste. C’est le début du templating / layout en PHP.
include : insérer un fichier
Référence : include.
Ce n’est pas une fonction, c’est une construction du langage (comme echo). On écrit souvent sans parenthèses.
<!DOCTYPE html>
<html lang="fr">
<body>
<?php include 'header.php'; ?>
<main>
<h2>Accueil</h2>
<p>Contenu de la page d'accueil.</p>
</main>
<?php include 'footer.php'; ?>
</body>
</html>
PHP lit header.php, l’exécute à cet endroit, puis le main, puis footer.php. Deux pages, un seul header à maintenir.
require : pareil, sauf si le fichier manque
Référence : require.
Les deux prennent un fichier et l’intègrent. La différence, c’est l’erreur.
| Fichier introuvable | Suite du script | |
|---|---|---|
include |
avertissement E_WARNING |
continue |
require |
Error (PHP 8 ; avant : E_COMPILE_ERROR) |
s’arrête |
<?php
include 'fichier-inexistant.php';
echo 'Ce texte s\'affiche quand même';
Warning à l’écran, puis le texte. include n’a pas coupé.
<?php
require 'fichier-inexistant.php';
echo 'Ce texte ne s\'affichera pas';
Warning d’ouverture, puis fatal : plus rien après. En PHP, une Error / fatal coupe tout.
Quand require ? Fichier obligatoire : connexion base de données, config. Sans lui, continuer ne sert à rien.
Quand include ? Morceau non critique (un footer, un bloc optionnel). Un trou dans la page, ce n’est pas une fatalité.
include_once : une seule fois
Référence : include_once.
include deux fois le même fichier → le contenu s’affiche deux fois.
<?php
include 'annonce.php';
include 'annonce.php';
// le paragraphe s'affiche deux fois
include_once : PHP vérifie si le fichier a déjà été inclus. Si oui, il ne le ré-évalue pas. true est renvoyé, et on évite les doublons.
<?php
include_once 'annonce.php';
include_once 'annonce.php';
// une seule fois
Utile dès qu’un fichier est partageable et risque d’être tiré depuis plusieurs endroits (une classe, un fichier de connexion BDD : on ne veut pas deux connexions, ni redéclarer).
require_once : pareil, avec l’erreur fatale
Référence : require_once. Identique à require, plus la vérif « déjà inclus ? ».
Un fichier functions.php déclare formatPrice(). On l’appelle deux fois avec _once : pas d’erreur, la fonction n’est déclarée qu’une fois.
<?php
require_once 'functions.php';
require_once 'functions.php';
echo formatPrice(19.99);
Sans _once, le second require ré-exécute le fichier. PHP ne permet pas de redéclarer une fonction déjà déclarée. Fatal. Voir fonctions utilisateur.
Pour les fonctions et les classes : require_once (ou include_once). On est sûr de ne pas les charger deux fois.
À retenir
include/require: intégrer un fichier.- Fichier manquant :
include→ warning, on continue.require→ fatal, on coupe. _once: ne charge le fichier que s’il ne l’a pas déjà été.
Démo vidéo
FAQ rapide (SEO & technique)
include est une fonction ?
Non : une construction du langage. Voir include.
Différence include / require ?
Même inclusion. Fichier absent : include avertit et continue, require lève une Error et s’arrête. Voir require.
À quoi sert _once ?
Ne pas inclure deux fois le même fichier (fonctions, classes, config). Voir include_once et require_once.
Pourquoi une fatal si j’inclus deux fois un fichier de fonctions ?
PHP interdit de redéclarer une fonction. _once évite ça.
Conclusion
Header et footer dans leurs fichiers, include (ou require) dans chaque page : on arrête de copier-coller. Fichier vital → require. Fichier déjà chargé possible (fonctions, classes) → _once.
La suite de la playlist : les formulaires HTML, pour envoyer des données au serveur. L’épisode est là : PHP : les formulaires HTML.