176 votes

Différence entre "include" et "require" en php

Y a-t-il une différence entre eux ? Leur utilisation est-elle une question de préférence ? L'utilisation de l'un plutôt que de l'autre présente-t-elle des avantages ? Lequel est le meilleur pour la sécurité ?

4 votes

3 votes

Utilisez toujours "require". "inclure" est aussi pratique qu'une porte électrique dans un sauna.

2 votes

@MarcoMariani Comment cela pourrait-il être gênant ? C'est probablement clair, mais je ne le vois pas. Peut-être la vapeur ?

185voto

efritz Points 2036

require lancera une erreur fatale PHP si le fichier ne peut pas être chargé. (L'exécution s'arrête)

include produit un avertissement si le fichier ne peut pas être chargé. (L'exécution se poursuit)

Voici une belle illustration de la différence entre include et require :

enter image description here

De : Différence require vs. include php (par Robert ; Nov 2012)

3 votes

Le lien est cassé

0 votes

Pas besoin du lien avec l'illustration ;)

151voto

Steven Points 5514

Vous trouverez les différences expliquées dans le manuel détaillé de PHP sur la page de require :

require est identique à include sauf qu'en cas d'échec, il produira également une E_COMPILE_ERROR erreur de niveau. En d'autres termes, il arrêtera le script alors que include n'émet qu'un avertissement ( E_WARNING ) qui permet au script de continuer.

Véase La réponse de @efritz pour un exemple

6 votes

tiposaurus.co.uk/2011/04/04/ "La différence essentielle entre require() et include() est que si vous require() un fichier qui ne peut pas être chargé (par exemple s'il n'existe pas), il génère une erreur fatale qui arrête complètement l'exécution de la page, et aucune autre sortie ne sera générée. D'autre part, si vous incluez() un fichier qui ne peut pas être chargé, cela génère simplement un avertissement et la construction de la page se poursuit."

3 votes

"Le choix de la méthode dépend de la situation ; require() est plus adapté au chargement de fichiers qui sont essentiels pour le reste de la page - par exemple, si vous avez un site Web basé sur une base de données, l'utilisation de require() pour inclure un fichier contenant le login et le mot de passe de la base de données est clairement préférable à l'utilisation de include(). Si vous utilisez include() dans cette situation, vous risquez de générer plus d'avertissements et d'erreurs que prévu."

3 votes

<?php if (isset($flibbertygibbet)) require 'file.php'; semblerait rendre cette réponse totalement incorrecte. Sinon, je devrais obtenir une erreur fatale même si la condition n'est pas vraie. strace ne montre pas PHP essayant même de toucher file.php .

5voto

Martin Bean Points 9945

Utilice include si cela ne vous dérange pas que votre script continue sans charger le fichier (au cas où il n'existerait pas etc.) et que vous pouvez (bien que vous ne devriez pas) vivre avec un message d'erreur Warning affiché.

Utilisation de require signifie que votre script s'arrêtera s'il ne peut pas charger le fichier spécifié, et lancera une erreur fatale.

3voto

Nithin Points 119

La principale différence entre require() y include() c'est que si vous require() un fichier qui ne peut pas être chargé (par exemple, s'il n'existe pas), il génère une erreur fatale qui interrompt complètement l'exécution de la page, et aucune autre sortie n'est générée. D'autre part, si vous include() un fichier qui ne peut pas être chargé, le système générera simplement un avertissement et continuera à construire la page.

2voto

user187291 Points 28951

Comme d'autres l'ont souligné, la seule différence est que require lance une erreur fatale, et include - un avertissement rattrapable. Quant à savoir lequel utiliser, mon conseil est de s'en tenir à include. Pourquoi ? parce que vous pouvez attraper un avertissement et produire un retour significatif aux utilisateurs finaux. Prenons l'exemple de

  // Example 1.
  // users see a standard php error message or a blank screen
  // depending on your display_errors setting
  require 'not_there'; 

  // Example 2.
  // users see a meaningful error message
  try {
      include 'not_there';
  } catch(Exception $e) {
     echo "something strange happened!";
  }

NB : pour que l'exemple 2 fonctionne, vous devez installer un gestionnaire d'erreurs vers exceptions, comme décrit ici http://www.php.net/manual/en/class.errorexception.php

  function exception_error_handler($errno, $errstr, $errfile, $errline ) {
     throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
  }
  set_error_handler("exception_error_handler");

0 votes

Au niveau de l'inclusion, ce n'est pas le meilleur endroit pour apprendre que le fichier que vous attendez n'est pas là. Dans votre exemple, il n'y a pas lieu de rejeter le problème sur les visiteurs de votre site Web.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X