require, include, require_once, include_once en PHP : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

require, include, require_once, include_once en PHP : que choisir et pourquoi c'est important ?

\n\n

Avez-vous déjà eu ce moment de doute : « Mais quelle est la différence entre require et include en PHP ? Et pourquoi a-t-on inventé ces versions _once ? » — Si oui, vous n'êtes pas seul. Cette question fait partie du top des questions les plus populaires sur Stack Overflow (des milliers de vues et des dizaines de votes). Et ce n'est pas un hasard.

\n\n

Chaque jour, des milliers de développeurs PHP — des débutants aux experts — utilisent ces fonctions. Mais beaucoup les utilisent par automatisme, sans réfléchir aux conséquences. Et c'est une erreur. Un mauvais choix peut entraîner des erreurs fatales, des duplications de code ou, pire encore, des bugs sournois qui ne se manifesteront qu'en production.

\n\n

Aujourd'hui, nous allons une bonne fois pour toutes comprendre les différences entre require, include, require_once et include_once. Vous découvrirez non seulement la théorie, mais aussi des exemples de code concrets que vous pourrez exécuter immédiatement. C'est parti !

\n\n

1. Les bases : pourquoi inclure des fichiers ?

\n\n

Avant de parler des différences, rappelons-nous pourquoi nous faisons cela. Dans les projets réels, le code PHP n'est pas écrit dans un seul fichier géant. Ce serait un cauchemar à maintenir. Au lieu de cela, le code est divisé en modules :

\n\n
    \n
  • Configuration — config.php
  • \n
  • Fonctions — functions.php
  • \n
  • Templates — header.php, footer.php
  • \n
  • Classes — User.php, Database.php
  • \n
\n\n

C'est là que require et include entrent en jeu. Ils « collent » littéralement le contenu d'un fichier dans un autre. PHP traite le fichier inclus comme si son code avait été écrit directement à cet endroit.

\n\n

2. require vs include : la différence clé — la réaction aux erreurs

\n\n

C'est le point le plus important. Retenez-le une fois pour toutes.

\n\n

include — inclusion souple

\n\n

include tente d'inclure un fichier. Si le fichier n'existe pas ou si une erreur se produit, PHP émet un Warning (avertissement), mais continue l'exécution du script.

\n\n
<?php\n// include.php\necho "Ceci est un include. ";\ninclude 'fichier_inexistant.php'; // Déclenche un Warning\necho "Le script continue son exécution !";\n?>\n
\n\n

Résultat :

\n
Ceci est un include. Warning: include(fichier_inexistant.php): failed to open stream...\nLe script continue son exécution !
\n\n

Vous voyez ? Le script ne s'est pas arrêté, il a continué. C'est pratique lorsque l'inclusion d'un fichier est optionnelle. Par exemple, si vous incluez un widget qui n'est pas critique pour le fonctionnement de la page.

\n\n

require — inclusion stricte

\n\n

require fait la même chose, mais avec une différence : si le fichier n'est pas trouvé, PHP émet une Fatal Error (erreur fatale) et arrête immédiatement le script.

\n\n
<?php\n// require.php\necho "Ceci est un require. ";\nrequire 'fichier_inexistant.php'; // Déclenche une Fatal Error\necho "Ce code ne sera jamais exécuté !";\n?>\n
\n\n

Résultat :

\n
Ceci est un require. Fatal error: Uncaught Error: Failed opening required 'fichier_inexistant.php'...
\n\n

Le script est mort. Point final. Plus rien ne s'exécute.

\n\n

Quand utiliser quoi ?

\n
    \n
  • require — pour les fichiers critiques : configuration de la base de données, classes principales, routeur. S'ils sont absents, le site ne peut pas fonctionner.
  • \n
  • include — pour les blocs optionnels : templates, widgets, bannières publicitaires. Si le fichier n'est pas inclus, la page s'affiche simplement sans ce bloc.
  • \n
\n\n

3. require_once et include_once : protection contre la duplication

\n\n

Imaginez maintenant une situation. Vous avez un fichier config.php qui déclare des constantes et des fonctions. Vous l'incluez dans plusieurs fichiers. Si vous l'incluez deux fois, PHP va tenter de redéclarer les constantes et fonctions, ce qui provoquera une erreur fatale. C'est là que require_once et include_once entrent en jeu : ils vérifient si le fichier a déjà été inclus et, si c'est le cas, ne l'incluent pas une seconde fois.

\n\n
<?php\n// config.php\ndefine('SITE_NAME', 'MonSite');\n\n// page.php\nrequire_once 'config.php';\nrequire_once 'config.php'; // Ignoré, déjà inclus\necho SITE_NAME; // Affiche 'MonSite'\n?>\n
\n\n

Résultat :

\n
MonSite
\n\n

Sans _once, la deuxième inclusion aurait provoqué une erreur fatale : Cannot redeclare constant SITE_NAME.

\n\n

Quand utiliser _once ?

\n
    \n
  • require_once — pour les fichiers qui définissent des classes, des fonctions ou des constantes. Vous voulez être sûr qu'ils ne sont inclus qu'une seule fois.
  • \n
  • include_once — pour les fichiers optionnels qui pourraient être inclus plusieurs fois par inadvertance (par exemple, dans une boucle).
  • \n
\n\n

4. Tableau récapitulatif des différences

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FonctionComportement en cas d'erreurVérification d'inclusion uniqueCas d'utilisation typique
includeWarning, le script continueNonWidgets, templates optionnels
requireFatal Error, le script s'arrêteNonConfiguration, classes essentielles
include_onceWarning, le script continueOuiFichiers optionnels inclus potentiellement plusieurs fois
require_onceFatal Error, le script s'arrêteOuiFichiers critiques avec définitions uniques
\n\n

5. Bonnes pratiques et pièges à éviter

\n\n

Voici quelques conseils pour utiliser ces fonctions comme un pro :

\n\n
    \n
  • Utilisez toujours require_once pour les fichiers de configuration et de classes — cela évite les erreurs de redéclaration et garantit que tout est bien chargé.
  • \n
  • Réservez include pour les contenus optionnels — comme les publicités ou les widgets non essentiels.
  • \n
  • Évitez d'utiliser include pour des fichiers critiques — si le fichier est manquant, vous risquez de vous retrouver avec une page cassée sans message d'erreur clair.
  • \n
  • Utilisez des chemins absolus ou relatifs explicites — évitez les chemins relatifs ambigus qui peuvent causer des erreurs difficiles à déboguer.
  • \n
  • Organisez vos fichiers avec une structure claire — par exemple, un dossier includes/ pour les fichiers réutilisables.
  • \n
\n\n

Conclusion

\n\n

Maintenant, vous savez tout sur require, include, require_once et include_once en PHP. Retenez l'essentiel : require pour les fichiers critiques, include pour les options, et _once pour éviter les doublons. Avec ces bases solides, vous éviterez les erreurs fatales et écrirez un code PHP plus propre et plus fiable.

\n\n

Et vous, quelle fonction utilisez-vous le plus souvent ? Partagez votre expérience dans les commentaires !

Blogs

Book Recommendations