Glisser

PHP : include et require (réutiliser son code)

PHP : include, require, include_once et require_once (partie 12)

Écrit par : Thibault Chazottes

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

  1. include / require : intégrer un fichier.
  2. Fichier manquant : include → warning, on continue. require → fatal, on coupe.
  3. _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.

Étiquettes :