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é ?
Le lien est cassé
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é ?
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 :
De : Différence require vs. include php (par Robert ; Nov 2012)
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 uneE_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
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."
"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."
<?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
.
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.
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.
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");
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.
4 votes
Duplication possible de Quand dois-je utiliser require_once ou include ?
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 ?
0 votes
Pour simplifier, si un fichier 'foo.php' est manquant par erreur, je veux le savoir dès que possible, et non pas lorsqu'une fonction qui aurait dû se trouver dans foo.php est appelée. Remplacer include par require peut souvent révéler des bogues. Disons que config.php est manquant et que l'application fonctionne avec une configuration par défaut. Qu'est-ce qui est le mieux pour la sécurité ? Quant au sauna, lorsque je suis à l'intérieur et que la porte ne s'ouvre pas pour une raison quelconque, je n'aime pas ça.