Question Différence entre require, include, require_once et include_once?


En PHP:

  • Quand devrais-je utiliser require contre. include?
  • Quand devrais-je utiliser require_once contre. include_once?

962
2018-03-10 16:13


origine


Réponses:


Il y a require et include_once ainsi que.

Donc, votre question devrait être ...

  1. Quand devrais-je utiliser require contre. include?
  2. Quand devrais-je utiliser require_once contre. require

La réponse à 1 est décrite ici.

La fonction require () est identique à include (), sauf qu'elle gère les erreurs différemment. Si une erreur survient, la fonction include () génère un avertissement, mais le script continuera son exécution. Le require () génère une erreur fatale, et le script va s'arrêter.

La réponse à 2 peut être trouvée ici.

L'instruction require_once () est identique à require () sauf que PHP vérifie si le fichier a déjà été inclus, et si c'est le cas, ne l'inclut pas (require) à nouveau.


1172
2018-03-10 16:17



Utilisation

  • exiger
    quand le fichier est Champs obligatoires par votre application, par ex. un modèle de message important ou un fichier contenant des variables de configuration sans lesquelles l'application se casserait.

  • Demandez une fois
    lorsque le fichier contient du contenu qui produirait une erreur lors de l'inclusion ultérieure, par ex. function important() { /* important code */} est certainement nécessaire dans votre application, mais puisque les fonctions ne peuvent pas être redéclarées ne devraient pas être inclus à nouveau.

  • comprendre lorsque le fichier n'est pas requis et que le flux d'application doit continuer s'il n'est pas trouvé, par ex.
    Idéal pour les modèles référençant des variables de la portée actuelle ou quelque chose

  • include_once
    dépendances facultatives qui produiraient des erreurs lors du chargement suivant ou peut-être l'inclusion de fichiers à distance que vous ne voulez pas avoir deux fois en raison du surcoût HTTP

Mais au fond, c'est à vous de savoir quand utiliser.


327
2018-03-10 16:25



Ma suggestion est d'utiliser simplement require_once 99,9% du temps.

En utilisant require ou include implique plutôt que votre code n'est pas réutilisable ailleurs, c'est-à-dire que les scripts que vous utilisez exécuter code au lieu de faire disponible une classe ou certaines bibliothèques de fonctions.

Si vous avez besoin / y compris du code qui s'exécute sur place, c'est un code de procédure, et vous devez apprendre à connaître un nouveau paradigme. Comme la programmation orientée objet, la programmation par fonction ou la programmation fonctionnelle.

Si vous faites déjà de la programmation OO ou fonctionnelle, en utilisant include_once va surtout être dilatoire où dans la pile vous trouvez des bugs / erreurs. Voulez-vous savoir que la fonction do_cool_stuff() n'est pas disponible lorsque vous appelez pour plus tard, ou le moment où vous vous attendez à ce qu'il soit disponible en exigeant la bibliothèque? En règle générale, il est préférable de savoir immédiatement si quelque chose dont vous avez besoin et attendez n'est pas disponible, alors utilisez simplement require_once.

Alternativement, dans OOP moderne, juste autoload vos cours lors de l'utilisation.


269
2018-03-10 16:46



Différence entre les fonctions de _once et sans fonctions de _once: sans le code _once sera inclus à nouveau alors qu'avec les fonctions de _once PHP conserve une trace des fichiers inclus et ne l'inclura qu'une seule fois.

Différence entre require et include: Si un fichier requis n'est pas trouvé, PHP va émettre une erreur fatale alors que pour include seul un avertissement sera émis.


26
2018-03-10 16:18



include() lancera un avertissement s'il ne peut pas inclure le fichier, mais le reste du script sera exécuté.

require() jettera un E_COMPILE_ERROR et arrêtez le script s'il ne peut pas inclure le fichier.

le include_once() et require_once() Les fonctions n'incluront pas le fichier une seconde fois s'il a déjà été inclus.

Voir les pages de documentation suivantes:


25
2017-11-03 11:48



Chaque fois que vous utilisez require_once() peut être utilisé dans un fichier pour inclure un autre fichier lorsque vous avez besoin du fichier appelé seulement une seule fois dans le fichier en cours. Ici, dans l'exemple, j'ai un test1.php.

<?php  
echo "today is:".date("Y-m-d");  
?>  

et dans un autre fichier que j'ai nommé test2.php

<?php  
require_once('test1.php');  
require_once('test1.php');  
?>

comme vous regardez le m exigeant le fichier test1 deux fois mais le fichier inclura le test1 une fois et pour l'appel à la deuxième fois ceci sera ignoré. Et sans arrêter affichera la sortie une seule fois.

Chaque fois que vous utilisez 'include_once () `peut être utilisé dans un fichier pour inclure un autre fichier lorsque vous avez besoin du fichier appelé plus d'une fois dans le fichier en cours. Ici, dans l'exemple, j'ai un fichier nommé test3.php.

<?php  
echo "today is:".date("Y-m-d");  
?> 

Et dans un autre fichier que j'ai nommé test4.php

<?php  
include_once('test3.php');  
include_once('test3.php');  
?>

Pendant que vous regardez le m comprenant le dossier de test3 inclura le dossier une fois mais arrêtera l'exécution supplémentaire.


18
2017-09-29 09:42



Utilisez "include" pour réutilisable PHP modèles Utilisez "require" pour les bibliothèques requises.

"* _once" est sympa, car il vérifie si le fichier est déjà chargé ou non, mais cela n'a de sens que dans "require_once".


16
2018-03-10 17:08



La différence réside dans l'erreur générée par les commandes. Avec require, le fichier que vous voulez utiliser est vraiment nécessaire et génère donc un E_ERROR si ce n'est pas trouvé.

require() est identique à include()  sauf en cas d'échec, il va également produire un fatal E_ERROR  erreur de niveau.

include ne génère qu'un E_WARNING erreur si elle échoue qui est plus ou moins silencieuse.

Utilisez-le donc si le fichier est requis pour que le code restant fonctionne et que vous vouliez que le script échoue, le fichier n'est pas disponible.


Pour *_once():

include_once() peut être utilisé dans les cas où le même fichier pourrait être inclus et évalué plus d'une fois lors d'une exécution particulière d'un script, dans ce cas, il peut éviter des problèmes tels que redéfinitions de fonctions, réaffectations de valeurs variables, etc.

La même chose s'applique à require_once() bien sûr.


Référence: require(), include_once()


11
2018-03-10 16:20



Avec require, le fichier doit exister, sinon, une erreur s'affichera; alors qu'avec include - si le fichier n'existe pas alors la page continuera le chargement.


8
2018-03-10 16:24



Exiger des parties critiques, comme l'autorisation et inclure tous les autres.

Les inclusions multiples sont juste de très mauvaise conception et doivent être évitées du tout. Donc, ça n'a pas vraiment d'importance.


7
2018-03-10 17:04



exiger produira une erreur fatale (E_COMPILE_ERROR) et arrêtera le script.

comprendre ne produira qu'un avertissement (E_WARNING) et le script continuera.

le Demandez une fois L'instruction peut être utilisée pour inclure un fichier PHP dans un autre, lorsque vous devrez inclure le fichier appelé plusieurs fois.

Si a.php est un script PHP appelant b.php avec une instruction require_once (), et ne trouve pas b.php, a.php arrête l'exécution, provoquant une erreur fatale.


7
2017-07-31 06:08