logo oujood
🔍

Maîtriser les fonctions include() et require() en PHP pour inclure des fichiers et optimiser votre code

Découvrez comment inclure un fichier PHP dans un autre avec les instructions include() et require().
Ces fonctions essentielles permettent de réutiliser du code PHP, d'inclure des templates, des menus ou des en-têtes dans vos pages web. Apprenez la différence entre include et require, leur gestion des erreurs, et les bonnes pratiques pour structurer un site PHP modulaire.

OUJOOD.COM

Comprendre la fonction include en PHP : réutiliser du code efficacement

Les fonctions include() et require() en PHP constituent des outils fondamentaux pour tout développeur souhaitant optimiser l'organisation de son code. Ces instructions permettent d'inclure le contenu d'un fichier PHP dans un autre fichier, évitant ainsi la duplication de code et facilitant la maintenance.

Au lieu de répéter le même bloc de code dans chaque page de votre site web (en-têtes, menus de navigation, pieds de page), vous pouvez stocker ce code dans un fichier séparé et l'inclure où nécessaire. Cette approche modulaire améliore considérablement la maintenabilité de votre application PHP et respecte le principe DRY (Don't Repeat Yourself).

La syntaxe de base des instructions include et require peut s'écrire de deux manières équivalentes :

include("chemin/nomFichier.php"); -Ou- include "chemin/nomFichier.php";
require("chemin/nomFichier.php"); -Ou- require "chemin/nomFichier.php";

Imaginons que vous développez un site web avec plusieurs dizaines de pages. Chaque page contient un en-tête HTML identique, un menu de navigation commun et un pied de page standardisé. Sans les fonctions d'inclusion, vous devriez copier-coller ce code dans chaque fichier, ce qui pose plusieurs problèmes :

  • Modification fastidieuse : changer un élément du menu nécessiterait de modifier toutes les pages manuellement
  • Risques d'erreurs : oublier de mettre à jour une page créerait des incohérences
  • Code volumineux : chaque fichier contiendrait des centaines de lignes répétitives

Grâce à la fonction include() de PHP, vous écrivez ce code une seule fois dans un fichier dédié (par exemple "header.php", "menu.php", "footer.php") et vous l'insérez dynamiquement dans toutes vos pages. Cette méthodologie transforme radicalement votre workflow de développement.

La fonction include() insère le contenu complet d'un fichier PHP dans le fichier courant avant son exécution par le serveur. PHP propose deux fonctions principales pour cette tâche :

  • La fonction include() : gestion souple des erreurs
  • La fonction require() : gestion stricte des erreurs

Bien que ces deux fonctions accomplissent le même objectif d'inclusion de fichiers PHP, leur comportement diffère significativement en cas d'erreur, comme nous le verrons en détail dans ce tutoriel.

La fonction include() en PHP : inclusion flexible de fichiers

La fonction include() en PHP prend l'intégralité du contenu d'un fichier spécifié et l'incorpore dans le fichier appelant. Cette fonction s'avère particulièrement utile pour inclure des composants optionnels ou des éléments d'interface utilisateur.

Gestion des erreurs avec include() : Si le fichier demandé est introuvable ou inaccessible, include() génère un avertissement PHP (warning) mais permet au script de continuer son exécution. Cette caractéristique rend include() approprié pour les éléments non critiques de votre application.

Exemple 1 : Inclure un en-tête de page avec include()

Créons un scénario réaliste où vous disposez d'un fichier d'en-tête standardisé nommé "header.php" contenant le logo, le titre du site et la navigation principale. Pour inclure cet en-tête dans n'importe quelle page, utilisez la fonction include() :

Exemple :     📋 Copier le code

<html>
<body>

<?php 
// Inclusion de l'en-tête commun du site
// Ce fichier contient le logo, le titre et le menu principal
include("header.php"); 
?>

<h1>Page d'accueil</h1>
<p>Bienvenue sur la page d'accueil de mon site web. Merci de votre visite et bonne navigation !</p>

</body>
</html>

Dans cet exemple, le fichier header.php est inséré automatiquement à l'emplacement de la directive include(). Le navigateur reçoit une page HTML complète comme si tout le code avait été écrit dans un seul fichier.

Exemple 2 : Créer un menu de navigation réutilisable

Un des cas d'usage les plus courants de la fonction include PHP concerne les menus de navigation. Plutôt que de dupliquer le code HTML du menu sur chaque page, créons un fichier "menu.php" contenant la structure complète de navigation :

Exemple :     📋 Copier le code

<!-- Fichier menu.php : Menu de navigation principal du site -->
<ul>
    <li><a href="/default.php">Accueil</a></li>
    <li><a href="/tutorials.php">Tutoriaux</a></li>
    <li><a href="/references.php">Références</a></li>
    <li><a href="/examples.php">Exemples</a></li>
    <li><a href="/about.php">Qui suis-je ?</a></li>
    <li><a href="/contact.php">Contact</a></li> 
</ul>

Maintenant, incluez ce menu dans toutes les pages de votre site en une seule ligne de code :

Exemple :     📋 Copier le code

<html>
<body>

<div class="leftmenu">
<?php 
// Inclusion du menu de navigation depuis le fichier externe
// Permet de centraliser la gestion du menu pour tout le site
include("menu.php"); 
?>
</div>

<h1>Bienvenue sur mon site web</h1>
<p>Découvrez nos contenus et ressources pour apprendre la programmation PHP.</p>

</body>
</html>

Résultat de l'inclusion : code HTML généré

Lorsque vous consultez le code source HTML généré par PHP dans votre navigateur, le fichier menu.php a été fusionné avec le reste du code. Voici ce que le navigateur reçoit réellement :

Exemple :     📋 Copier le code

<!-- Code HTML final envoyé au navigateur après traitement PHP -->
<html>
<body>

<div class="leftmenu">
    <ul>
        <li><a href="/default.php">Accueil</a></li>
        <li><a href="/tutorials.php">Tutoriaux</a></li>
        <li><a href="/references.php">Références</a></li>
        <li><a href="/examples.php">Exemples</a></li>
        <li><a href="/about.php">Qui suis-je ?</a></li>
        <li><a href="/contact.php">Contact</a></li> 
    </ul>
</div>

<h1>Bienvenue sur mon site web</h1>
<p>Découvrez nos contenus et ressources pour apprendre la programmation PHP.</p>

</body>
</html>

L'avantage majeur de cette approche modulaire : si vous souhaitez ajouter un nouvel élément au menu ou modifier un lien, vous n'intervenez que sur le fichier menu.php. Toutes les pages de votre site reflèteront automatiquement cette modification.

La fonction require() en PHP : inclusion stricte et obligatoire

La fonction require() en PHP fonctionne de manière identique à include() pour ce qui est de l'insertion de fichiers, mais elle adopte une gestion des erreurs beaucoup plus stricte.

Différence critique entre include() et require() :

  • include() : En cas d'erreur (fichier introuvable), génère un warning (avertissement) et le script continue
  • require() : En cas d'erreur, génère une erreur fatale (fatal error) et arrête immédiatement l'exécution

Cette distinction est fondamentale pour la robustesse de votre application PHP. Utilisez require() pour les fichiers essentiels au fonctionnement de votre script (fichiers de configuration, connexions base de données, classes critiques).

Démonstration : comportement de include() face à une erreur

Testons le comportement d'include() lorsque le fichier demandé n'existe pas. Exécutez ce code sans créer le fichier Fichier.php :

Exemple :     📋 Copier le code

<html>
<body>

<?php
// Tentative d'inclusion d'un fichier inexistant
// include() génère un warning mais continue l'exécution
include("Fichier.php");
echo "Bonjour le monde !";
?>

</body>
</html>

Message d'erreur affiché :

Warning: include(fichier.php) [function.include]:
failed to open stream:
no such file or directory in c:\home\website\fichier.php on line 5

Bonjour le monde !

Observation importante : Malgré l'avertissement, la ligne "echo" s'est bien exécutée et le message "Bonjour le monde !" s'affiche. Le script PHP a continué son exécution normale après l'erreur d'inclusion. Ce comportement peut être souhaitable pour des éléments optionnels de votre site.

Démonstration : comportement de require() face à une erreur

Reprenons exactement le même exemple mais avec require() au lieu d'include() :

Exemple :     📋 Copier le code

<html>
<body>

<?php
// Tentative d'inclusion d'un fichier inexistant avec require()
// require() génère une erreur fatale et arrête tout
require("Fichier.php");
echo "Bonjour le monde !";
?>

</body>
</html>

Message d'erreur affiché :

Warning: require(ficher.php) [function.require]:
failed to open stream:
no such file or directory in c:\home\website\fichier.php on line 5

Différence cruciale : La ligne "echo" n'a jamais été exécutée ! Le message "Bonjour le monde !" n'apparaît pas car require() a stoppé l'exécution du script dès la détection de l'erreur.

Recommandation pratique : Utilisez require() pour inclure des fichiers critiques dont votre application ne peut se passer. Si un fichier de configuration ou une classe essentielle est manquant, il est préférable d'arrêter l'exécution plutôt que de produire des résultats imprévisibles.

Exercice pratique : Construire un site PHP modulaire complet

Mettons en pratique les fonctions include() et require() PHP en créant un site web structuré de manière professionnelle. Notre site comportera :

  • Un en-tête avec le titre du site
  • Un menu de navigation latéral
  • Un corps de page dynamique avec contenu variable
  • Un pied de page standardisé

Avant d'utiliser PHP, voici le code HTML de base qui structure notre page. Si vous débutez en HTML, consultez notre cours HTML complet.

Structure HTML initiale du site

Exemple :     📋 Copier le code

<!-- Structure HTML complète d'une page web classique -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
	<title>Titre du site</title>	
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
	<link rel="stylesheet" media="screen" type="text/css" title="style" href="style.css"/>
</head>
<body>
	<!-- En-tête de la page contenant le logo et le titre -->
	<div id="entete">
		<h1>Titre du site</h1>	
	</div>
	
	<!-- Menu de navigation latéral -->
	<div id="menu">
		<div class="element_menu">
			<a href="page1.html">Menu 1</a><br/>
		</div>
		<div class="element_menu">
			<a href="page2.html">Menu 2</a><br/>
		</div>
		<div class="element_menu">
			<a href="page3.html">Menu 3</a><br/>
		</div>
	</div>

	<!-- Corps principal de la page avec contenu -->
	<div id="corps">
		<h2>Titre de la page</h2>
		<p>Contenu de la page, contenu de la page, contenu de la page,
			contenu de la page, contenu de la page, contenu de la page.
		</p>
	</div>

	<!-- Pied de page avec informations de copyright -->
	<div id="bas">
		<p>Contenu du pied de page</p>	
	</div>
</body>
</html>

Feuille de style CSS pour la mise en page

Voici le code CSS qui stylise notre structure HTML et crée une mise en page professionnelle :

Exemple :     📋 Copier le code

/* Styles globaux du site */
body
{
   width:770px;
   margin:auto; /* Centre la page horizontalement */
   margin-top:20px; /* Espace avec le haut du navigateur */
   margin-bottom:20px; /* Espace avec le bas du navigateur */
   background-color: #CCCCCC;
   color:#000000;
}

/* Styles de l'en-tête */
#entete
{
   width:770px;
   height:100px;
   margin-bottom: 10px;
   border: 1px solid black;
   background-color:#333399;
   color: #FFFFFF;
}

/* Styles du corps principal */
#corps
{
   margin-left: 154px; /* Laisse place au menu latéral */
   margin-bottom: 5px;
   padding: 10px; 
   margin-right: 1px;
   color: #FFFFFF;
   background-color: #524222;
   border: 1px solid #FFFFFF;
}

/* Styles du menu de navigation */
#menu
{
   width:140px; /* Largeur fixe du menu */
   border: 1px solid #FFFFFF;
   margin-top: 0px;
   float:left; /* Le menu flotte à gauche du contenu */
   padding: 5px;
}

/* Styles du pied de page */
#bas
{
   height:80px;
   padding: 5px;
   margin-bottom: 5px;
   margin-top: 5px;
   text-align: center;
   color: #B3B3B3;
   background-color: #525262;
   border: 1px solid #FFFFFF;
}

/* Styles des éléments individuels du menu */
.element_menu
{
   color: #00FFFF;
   border: 2px solid black;
   margin-bottom: 5px; /* Espacement entre les éléments */
}

/* Styles des titres */
h1
{
   text-align: center;
   color: #00CCFF;
}

h2
{
   text-align: center;
   color: #FF00FF;
}

Méthode 1 : Architecture modulaire sécurisée (approche recommandée)

Cette première méthode offre une meilleure sécurité contre les attaques et représente la meilleure pratique en développement PHP. L'idée : découper la structure HTML en fichiers séparés que nous inclurons dans chaque page de contenu.

Avantages de cette méthode :

  • Sécurité renforcée : aucune manipulation d'URL possible
  • Clarté du code : chaque fichier a un rôle précis
  • Maintenance facilitée : modifier l'en-tête se fait en un seul endroit

Créons trois fichiers PHP distincts :

Fichier "haut.php" : En-tête et menu

Exemple :     📋 Copier le code

<!-- Fichier haut.php : contient tout le code jusqu'au menu inclus -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
	<title>Titre du site</title>	
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
	<link rel="stylesheet" media="screen" type="text/css" title="style" href="style.css"/>
</head>
<body>
	<!-- En-tête du site -->
	<div id="entete">
		<h1>Titre du site</h1>	
	</div>

	<!-- Menu de navigation -->
	<div id="menu">
		<div class="element_menu">
			<a href="page1.php">Menu 1</a><br/>
		</div>
		<div class="element_menu">
			<a href="page2.php">Menu 2</a><br/>
		</div>
		<div class="element_menu">
			<a href="page3.php">Menu 3</a><br/>
		</div>
	</div>

Fichier "pied.php" : Pied de page et fermeture HTML

Exemple :     📋 Copier le code

<!-- Fichier pied.php : contient le pied de page et ferme les balises HTML -->
<div id="bas">
	<p>Contenu du pied de page</p>	
</div>

</body>
</html>

Fichier "corps.php" : Page de contenu principal

Chaque page de votre site aura cette structure simple qui inclut l'en-tête et le pied de page automatiquement :

Exemple :     📋 Copier le code

<?php 
// Inclusion de l'en-tête et du menu (début de page)
include("haut.php"); 
?>

<!-- Contenu spécifique de cette page -->
<div id="corps">
	<h2>Titre de la page</h2>
	<p>Contenu de la page, contenu de la page, contenu de la page.
		Contenu de la page, contenu de la page, contenu de la page.
	</p>
</div>

<?php 
// Inclusion du pied de page (fin de page)
include("pied.php"); 
?>

Cette architecture permet de créer autant de pages que nécessaire avec un minimum de code. Vous pouvez nommer vos fichiers comme vous le souhaitez (header.php, footer.php, etc.).

Méthode 2 : Template global avec inclusion dynamique

La seconde approche inverse la logique : au lieu que chaque page inclue l'en-tête et le pied, nous créons un fichier template complet qui inclut dynamiquement le contenu.

Avantages :

  • Changement de design global en modifiant un seul fichier
  • Toute la structure est centralisée

Inconvénients :

  • Risques de sécurité si mal implémentée (injection de code)
  • Nécessite une validation stricte des paramètres

Fichier "page.php" : Template global du site

Exemple :     📋 Copier le code

<!-- Fichier page.php : template complet avec inclusion dynamique du contenu -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
	<title>Titre du site</title>	
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
	<link rel="stylesheet" media="screen" type="text/css" title="style" href="style.css"/>
</head>
<body>
	<!-- En-tête fixe du site -->
	<div id="entete">
		<h1>Titre du site</h1>	
	</div>
<!-- Menu de navigation -->
<div id="menu">
	<div class="element_menu">
		<a href="page1.php">Menu 1</a><br/>
	</div>
	<div class="element_menu">
		<a href="page2.php">Menu 2</a><br/>
	</div>
	<div class="element_menu">
		<a href="page3.php">Menu 3</a><br/>
	</div>
</div>

<?php 
// Inclusion du contenu dynamique de la page
// Ce fichier change selon la page demandée
include("corps.php"); 
?>

<!-- Pied de page fixe -->
<div id="bas">
	<p>Contenu du pied de page</p>	
</div>


Fichier "corps.php" : Contenu variable

Exemple :     📋 Copier le code

<!-- Fichier corps.php : contenu qui sera inséré dans le template -->
<div id="corps">
	<h2>Titre de la page</h2>
	<p>Contenu de la page, contenu de la page, contenu de la page.
		Contenu de la page, contenu de la page, contenu de la page.
	</p>
</div>

Inclusion dynamique avec paramètres GET (ATTENTION : nécessite sécurisation !)

Pour rendre le système vraiment dynamique, on peut passer le nom du fichier à inclure via l'URL. Cependant, cette approche présente des risques de sécurité critiques si elle n'est pas correctement sécurisée.

Version NON SÉCURISÉE (à ne JAMAIS utiliser en production)

Exemple :     📋 Copier le code

<!-- CODE DANGEREUX : Vulnérable aux injections de fichiers ! -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
	<title>Titre du site</title>	
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
	<link rel="stylesheet" media="screen" type="text/css" title="style" href="style.css"/>
</head>
<body>
	<div id="entete">
		<h1>Titre du site</h1>	
	</div>
<div id="menu">
	<div class="element_menu">
		<a href="page1.php">Menu 1</a><br/>
	</div>
	<div class="element_menu">
		<a href="page2.php">Menu 2</a><br/>
	</div>
	<div class="element_menu">
		<a href="page3.php">Menu 3</a><br/>
	</div>
</div>

<?php
// DANGER : Récupération directe de la variable GET sans validation
// Un attaquant peut injecter n'importe quel chemin de fichier !
$page = $_GET['page'];
include("$page.php");
?> 

<div id="bas">
	<p>Contenu du pied de page</p>	
</div>


Pourquoi ce code est dangereux ?

Si un visiteur clique sur un lien comme "?page=news", le système inclura "news.php". Mais un attaquant malveillant pourrait modifier l'URL ainsi :

  • ?page=../../../etc/passwd (tenter de lire des fichiers système)
  • ?page=http://site-malveillant.com/virus (inclusion de code distant)

Cette vulnérabilité, appelée Local File Inclusion (LFI) ou Remote File Inclusion (RFI), représente une faille de sécurité critique.

Version SÉCURISÉE avec liste blanche (approche recommandée)

La solution professionnelle : utiliser une structure conditionnelle qui valide explicitement les valeurs autorisées. Nous créons une liste blanche de pages autorisées :

Exemple :     📋 Copier le code

<!-- CODE SÉCURISÉ : Validation stricte avec liste blanche -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
	<title>Titre du site</title>	
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
	<link rel="stylesheet" media="screen" type="text/css" title="style" href="style.css"/>
</head>
<body>
	<div id="entete">
		<h1>Titre du site</h1>	
	</div>
<div id="menu">
	<div class="element_menu">
		<a href="?page=menu1">Menu 1</a><br/>
	</div>
	<div class="element_menu">
		<a href="?page=menu2">Menu 2</a><br/>
	</div>
	<div class="element_menu">
		<a href="?page=menu3">Menu 3</a><br/>
	</div>
</div>

<?php
// Validation stricte : seules les valeurs explicitement autorisées sont acceptées
// Aucune autre valeur ne déclenchera d'inclusion
if (isset($_GET['page']) && $_GET['page'] == "menu1")
{
    include("menu1.php");
}
elseif (isset($_GET['page']) && $_GET['page'] == "menu2")
{
    include("menu2.php");
}
elseif (isset($_GET['page']) && $_GET['page'] == "menu3")
{
    include("menu3.php");
}
else
{
    // Si aucune condition n'est remplie, afficher la page d'accueil par défaut
    include("accueil.php");
}
?>

<div id="bas">
	<p>Contenu du pied de page</p>	
</div>


Principe de sécurité : Si un attaquant tente de modifier l'URL avec une valeur non autorisée, aucune des conditions if ne sera satisfaite, donc aucun fichier dangereux ne sera inclus. Le système affichera simplement la page d'accueil par défaut.

Les fonctions include_once() et require_once() : éviter les inclusions multiples

PHP propose des variantes des fonctions d'inclusion : include_once() et require_once(). Ces fonctions garantissent qu'un fichier ne sera inclus qu'une seule fois maximum, même si l'instruction est rencontrée plusieurs fois.

Pourquoi utiliser include_once et require_once ?

Lorsque vous développez des applications PHP complexes avec de nombreux fichiers interdépendants (classes, fonctions, configurations), il arrive fréquemment qu'un fichier soit inclus indirectement plusieurs fois via différents chemins d'inclusion. Cela peut provoquer des erreurs de redéclaration de fonctions ou de classes.

Les instructions include_once() et require_once() résolvent ce problème : si le fichier a déjà été inclus précédemment, l'instruction sera simplement ignorée.

Démonstration du problème avec include() classique

Créons d'abord un fichier contenant une fonction simple :

Fichier "mes_fonctions.php"

Exemple :     📋 Copier le code

<?php
// Fonction qui multiplie un nombre par lui-même (carré)
function multiplySelf($var){
    // Calcul : $var = $var * $var
    $var *= $var; 
    echo $var;
}
?>

Tentative d'inclusion multiple avec require() : génère une erreur fatale

Si nous incluons ce fichier deux fois avec require() standard, PHP tentera de redéfinir la fonction multiplySelf(), ce qui est interdit :

Exemple :     📋 Copier le code

<?php
// Première inclusion du fichier de fonctions
require "mes_fonctions.php";
// Appel de la fonction : affiche 4 (2 x 2)
multiplySelf(2);
echo "<br>";
// Seconde inclusion du même fichier
// PROBLÈME : PHP va tenter de redéfinir multiplySelf()
require "mes_fonctions.php";
// Cette ligne ne s'exécutera jamais à cause de l'erreur fatale
multiplySelf(5);
?>

Message d'erreur généré :

Fatal error: Cannot redeclare multiplySelf() (previously declared in mes_fonctions.php:3) in mes_fonctions.php on line 3

L'exécution du script s'arrête brutalement. La fonction multiplySelf(5) ne sera jamais appelée car PHP a détecté une tentative de redéclaration de fonction.

Solution avec require_once() : inclusion intelligente et sécurisée

Réécrivons exactement le même code en utilisant require_once() à la place de require() :

Exemple :     📋 Copier le code

<?php
// Première inclusion : le fichier est chargé et la fonction définie
require_once "mes_fonctions.php";
// Appel réussi : affiche 4 (2 x 2)
multiplySelf(2);
echo "<br>";
// Seconde tentative d'inclusion du même fichier
// require_once détecte que le fichier a déjà été inclus
// Cette ligne est ignorée sans générer d'erreur
require_once "mes_fonctions.php";
// Cette ligne s'exécute normalement : affiche 25 (5 x 5)
multiplySelf(5);
?>

Résultat affiché :

4
25

Comme vous pouvez le constater, require_once() a résolu le problème. Le fichier n'a été inclus qu'une seule fois, même s'il était demandé deux fois. Les deux appels de fonction fonctionnent parfaitement.

Synthèse : include vs require et leurs variantes once

Les instructions include() et require() en PHP accomplissent la même tâche fondamentale : inclure du code d'un fichier externe dans le document courant. Cependant, leur comportement face aux erreurs diffère significativement.

Différences principales entre include() et require()

include() :

  • Génère un avertissement (E_WARNING) si le fichier est introuvable
  • Le script continue son exécution malgré l'erreur
  • Idéal pour les composants optionnels (widgets, publicités, éléments non critiques)
  • Plus permissif, adapté aux inclusions "souples"

require() :

  • Génère une erreur fatale (E_COMPILE_ERROR) si le fichier est introuvable
  • Le script s'arrête immédiatement
  • Indispensable pour les fichiers critiques (configuration, classes essentielles, connexions base de données)
  • Plus strict, garantit l'intégrité de l'application

Quand utiliser include_once() et require_once() ?

Les variantes _once ajoutent une couche de protection contre les inclusions multiples :

  • include_once() : Pour fichiers contenant des définitions qui ne doivent pas être dupliquées (fonctions, classes)
  • require_once() : Pour fichiers critiques avec définitions (configuration avec constantes, classes principales)

Recommandations pratiques pour structurer votre code PHP :

  • Utilisez require_once() pour : fichiers de configuration, connexions base de données, classes PHP, fichiers de fonctions essentielles
  • Utilisez include_once() pour : templates HTML, composants réutilisables, widgets
  • Utilisez require() pour : fichiers qui doivent être inclus plusieurs fois (boucles)
  • Utilisez include() pour : contenus optionnels dont l'absence ne doit pas bloquer le site

En maîtrisant ces quatre fonctions d'inclusion PHP, vous pourrez créer des sites web modulaires, maintenables et sécurisés, en évitant la duplication de code et en organisant votre projet de manière professionnelle.


Par carabde | Mis à jour le 26 novembre 2025