Quel est l'intérêt de tenter d'inclure
ou d'inclure_once
une bibliothèque en PHP si vous devez souvent utiliser require
ou require_once
à la place (car ils sont généralement d'une importance critique)?
Réponses
Trop de publicités?Parfois, vous incluez des fichiers à partir de bibliothèques que vous ne contrôlez pas, ou votre code est exécuté sur des environnements différents.
Il est possible que certains de ces fichiers ne soient pas réellement nécessaires pour votre script, mais soient des fichiers d'aide ou des extras.
Par exemple, si votre PHP génère du HTML, vous pourriez utiliser une inclusion pour ajouter une bannière. Mais vous ne voudriez pas que votre fichier s'arrête si, pour une raison quelconque, ce fichier de bannière manquait. Vous voudriez plutôt échouer gracieusement.
La différence entre include
/include_once
et require
/require_once
est que lorsque qu'un fichier n'est pas trouvé, le premier déclenche un avertissement tandis que le second déclenche une erreur. Les opinions peuvent varier mais à mon avis, si un fichier nécessaire n'est pas présent ou lisible pour une raison quelconque, cela représente une situation très critique et je préférerais voir une erreur et arrêter l'exécution, plutôt que d'avoir un avertissement et de continuer l'exécution dans un contexte clairement défaillant. Je crois donc qu'il est préférable de suivre la pratique recommandée d'utiliser exclusivement require
/require_once
et d'éviter include
/include_once
complètement.
include - cela tente de charger un fichier mais n'arrête pas l'exécution en cas d'échec
include_once - fait la même chose que 'include' mais effectue une vérification supplémentaire pour s'assurer que le fichier n'a pas déjà été inclus dans le script actuel
require - cela tente de charger un fichier et lance une erreur fatale en cas d'échec
require_once - même chose que 'require' mais effectue une vérification supplémentaire pour s'assurer qu'il n'est chargé qu'une seule fois
Si vous n'avez pas besoin d'utiliser include_once ou require_once, essayez de les éviter car la vérification supplémentaire ajoute un léger surcoût.
EDIT : Je devrais ajouter que la différence clé est que require échoue au niveau du compilateur, tandis que include lance une erreur à l'exécution.