Différence entre besoin, inclure, require_once et include_once?
En PHP:
- Quand dois-je utiliser
require
vsinclude
? - Quand dois-je utiliser
require_once
vsinclude_once
?
- Btw, il y a aussi
include_once
: php.net/manual/en/function.include-once.php - PHP CodeSniffer dit, si le fichier est inclus, sous certaines conditions, l'utilisation include_once (au lieu de require_once).
- stackoverflow.com/a/3633905/1045444
Vous devez vous connecter pour publier un commentaire.
Il y a
require
etinclude_once
ainsi.Donc, votre question doit être...
require
vsinclude
?require_once
vsrequire
La réponse à la 1 est décrit ici.
La réponse à 2 peut être trouvé ici.
require_once()
sera le plus rapide des deuxrequire
d est égalementrequire
d par un autre fichier qui est inclus/nécessaire?Utilisation
besoin
lorsque le fichier est nécessaire par votre application, par exemple, un important modèle de message ou d'un fichier contenant les variables de configuration sans lequel l'application se briser.
require_once
lorsque le fichier contient un contenu qui produirait une erreur sur inscription ultérieure, par exemple
function important() { /* important code */}
est certainement nécessaire à votre application mais depuis les fonctions ne peuvent pas être redéclarée ne devrait pas être inclus de nouveau.inclure
lorsque le fichier n'est pas nécessaire et le flux d'application devrait continuer lorsqu'il n'est pas trouvé, par exemple
idéal pour les modèles de référencer les variables de l'étendue actuelle ou quelque chose
include_once
les dépendances optionnelles qui serait de produire des erreurs sur le chargement suivant ou peut-être à distance d'inclusion de fichier que vous ne souhaitez pas arriver deux fois en raison de la HTTP généraux
Mais, fondamentalement, c'est à vous à utiliser.
include
?include_once
?require
?require_once
?Ma suggestion est d'utiliser
require_once
99,9% du temps.À l'aide de
require
ouinclude
au lieu de cela implique que votre code n'est pas réutilisable ailleurs, c'est à dire que les scripts que vous êtes en tirant en fait exécuter code au lieu de faire disponible d'une classe ou d'une fonction bibliothèques.Si vous êtes exigent que/y compris le code qui s'exécute sur le spot, c'est le code de procédure, et vous avez besoin de apprendre à connaître un nouveau paradigme. Comme la programmation orientée objet, basée sur la fonction de programmation, ou de la programmation fonctionnelle.
Si vous êtes déjà en train de le OO ou de la programmation fonctionnelle, à l'aide de
include_once
est la plupart du temps va être retarder où dans la pile vous trouvez des bugs/erreurs. Voulez-vous savoir que la fonctiondo_cool_stuff()
n'est pas disponible au moment de téléphoner pour plus tard, ou le moment que vous attendez qu'elle soit disponible en exigeant la bibliothèque? Généralement, il est préférable de savoir immédiatement si quelque chose vous avez besoin et attendre n'est pas disponible, utilisez doncrequire_once
.Sinon, dans l'actuelle programmation orientée objet, juste autoload vos classes lors de l'utilisation.
include
de la famille sont généralement carrément une mauvaise idée (parce que c'est assez rare pour être compris des fichiers qui ont toute possibilité de n'existant pas), et qui derequire_once
etrequire
, vous devez utiliserrequire_once
lorsque y compris les fichiers définir fonctions ou de classes à être utilisé ailleurs, ou instancier les singletons de la base de données des objets de connexion, et l'utilisationrequire
pour y compris les fichiers immédiatement faire lorsqu'ils sont inclus. Dans toute grande application web, ce dernier type d'inclure est inhabituel.require_once
est plus probable candidat à être utilisé, presque tout le temps. Compte tenu de minuscules généraux des différences entre les choix,require
assure le script s'arrête, je ne peux pas penser à de nombreux scénarios où une application ne peut survivre sans un fichier à inclure. Et_once
protège de la dupe des questions. Quiconque est en désaccord sait probablement ce qu'ils font peut donc choisir celui adapté à l'application ou du scénario.include
àrequire_once
sur toutes les pages de mon site web, nous allons voir si je vais avoir la moindre difficulté à bientôt.Différence entre _once fonctions et sans _once fonctions:
sans _once code sera inclus à nouveau alors qu'avec _once fonctions PHP conserve la trace des fichiers inclus et sera inclus qu'une seule fois.
Différence entre besoin et comprennent:
Si un fichier n'est pas trouvé PHP va émettre une erreur fatale alors que, pour inclure uniquement un avertissement sera émis.
include()
va lancer un avertissement si il ne peut pas inclure le fichier, mais le reste du script sera exécuté.require()
va jeter unE_COMPILE_ERROR
et de stopper le script s'il ne peut pas inclure le fichier.La
include_once()
etrequire_once()
fonctions ne seront pas inclure le fichier une seconde fois si elle a déjà été inclus.Consultez la documentation suivante pages:
Chaque fois que vous utilisez
require_once()
peut être utilisé dans un fichier à inclure un autre fichier quand vous avez besoin le fichier appelé qu'une seule fois dans le fichier actuel.Ici dans l'exemple, j'ai un test1.php.
et dans un autre fichier que j'ai nommé test2.php
que vous regardez la m exigeant le test1 fichier deux fois, mais le dossier comprendra les test1 une fois pour appeler à la deuxième fois, ce sera ignoré. Et sans arrêter affiche la sortie une seule fois.
Chaque fois que vous utilisez le 'include_once()` peut être utilisé dans un fichier à inclure un autre fichier quand vous avez besoin le fichier appelé plus d'une fois dans le fichier courant.
Ici dans l'exemple j'ai un fichier nommé test3.php.
Et dans un autre fichier que j'ai nommé test4.php
que vous regardez le m y compris le test3 fichier inclure le fichier une seule fois, mais arrêter la poursuite de l'exécution.
Utiliser "include" pour réutilisables PHP modèles. Utilisez le "besoin" pour les bibliothèques requises.
"*_once" est agréable, parce qu'il vérifie si le fichier est déjà chargé ou pas, mais il n'a de sens que pour moi dans "require_once".
La différence est dans l'erreur les commandes de générer. Avec
require
, le fichier que vous souhaitez utiliser est vraiment nécessaire, et génère donc unE_ERROR
si il n'est pas trouvé.include
seulement génère unE_WARNING
erreur si elle échoue, ce qui est plus ou moins silencieux.Afin de l'utiliser si le fichier est nécessaire pour faire le reste du code de travail et vous voulez que le script échoue, le fichier n'est pas disponible.
Pour
*_once()
:Même chose s'applique à
require_once()
de cours.Référence:
require()
,include_once()
require
donne E_COMPILE_ERROR, pas E_ERROR.Une réponse au bout de 7 ans pour 2018
Cette question a été posée il y a sept ans, et aucune des réponses pour fournir une aide pratique pour la question. Dans le monde moderne de la programmation PHP vous utilisez principalement
required_once
qu'une seule fois pour inclure votre auto chargeur de classe (compositeur de l'autochargeur souvent), et il sera en charge tous vos classes et de fonctions (fonctions fichiers doivent être explicitement ajouté àcomposer.json
fichier pour être disponibles dans tous les autres fichiers). Si pour une raison quelconque votre classe n'est pas téléchargeable à partir de l'autochargeur vous utilisezrequire_once
pour le charger.Ces jours vous utilisez
require
uniquement pour diviser un gros morceau d'un fichier PHP. C'est principalement un grand tableau de définition. Dans de tels cas, vous utilisez uniquementrequire
pasrequire_once
.Si le fichier que vous avez l'intention d'utiliser contient quelque chose exécutable ou déclare certaines variables, vous avez presque tout le temps besoin d'utiliser
require
, parce que si vous utilisezrequire_once
dans un autre endroit de votre code ne sera pas exécuté et/ou de vos variables ne mettrons pas en silence, provoquant des bugs qui sont absolument difficile à cerner.Il n'est pas pratique de cas d'utilisation pour
include
etinclude_once
vraiment.include()
,enveloppé dans une mémoire tampon de sortie pour mettre en œuvre votre moteur de template.require()
de partager de gros fichiers.require_once
pour PHPMailer l'intérieur d'une fonction, et mon autochargeur définit la$mail
variable nécessaires plus tard dans le code, de sorte que la prochainerequire_once
est ignorée, ce qui laisse$mail
pas initialisé ! la solution a été d'utiliser simplementrequire
après l'appel de fonction.require
dans ces cas?Vous devez garder la classe et des définitions de fonctions organisées dans les fichiers.
Utilisation
require_once()
pour charger dépendances (classes, fonctions, constantes).Utilisation
require()
pour charger de template fichiers.Utilisation
include_once()
pour charger dépendances optionnelles (classes, fonctions, constantes).Utilisation
include()
pour charger option de template fichiers.Exigent le fichier doit exister, si ce n'est pas une erreur d'affichage; considérant que comprennent - si le fichier n'existe pas alors la page continuera à charger.
Exiger des parties critiques, comme d'autorisation et de comprendre tous les autres.
Les inclusions multiples sont juste très mauvaise conception et doit être évitée à tout prix. Donc, *_once n'a pas vraiment d'importance.
Inclure /Besoin vous pouvez inclure le même fichier plusieurs fois aussi:
require_once /include_once
include()
va générer un message d'avertissement lorsqu'il ne trouve pas un fichier, maisrequire_once()
va générer une erreur fatale.Une autre chose est de savoir si le fichier est inclus avant. Puis
require_once()
ne sera pas l'inclure à nouveau.De la manuel:
La même chose est vraie pour la
_once()
variantes.J'ai été en utilisant la fonction comme ci-dessous:
Il y avait des valeurs constantes déclarées dans xyz.php.
J'ai appeler ce doSomething() de la fonction à partir d'un autre fichier de script PHP.
Mais j'ai observé le comportement tandis que l'appel de cette fonction dans une boucle, pour la première itération doSomething() a été d'obtenir des valeurs constantes dans
xyz.php
, mais plus tard, à chaque itérationdoSomething()
n'a pas été en mesure d'obtenir les valeurs des constantes déclarées dansxyz.php
.J'ai résolu mon problème en changeant de
require_once()
àinclude()
, mis à jourdoSomething()
code est comme ci-dessous:Maintenant, à chaque itération appel à
doSomething()
obtient les valeurs des constantes définies dansxyz.php
.À l'âge de
PSR-0 /PSR-4
automatiques, il peut être tout à fait inutile d'utiliser des déclarations si vous avez besoin de faire quelques fonctions /classes disponibles pour le code (bien sûr, vous avez encore besoin derequire_once
autochargeur lui-même dans votre fichier d'amorçage etinclude
modèles si vous utilisez PHP comme moteur de template).Quand doit-on utiliser
require
ouinclude
?La
require
etinclude
fonctions faire la même tâche, c'est à dire comprend et évalue le fichier spécifié, mais la différence estrequire
va provoquer une erreur fatale lorsque l'emplacement du fichier spécifié n'est pas valide, ou pour toute erreur alors queinclude
va générer un avertissement et continuer l'exécution du code.De sorte que vous pouvez utiliser le
require
fonction dans le cas où le fichier que vous essayez de comprendre ce qui cœur du système et peut provoquer un impact énorme sur le reste du code et vous pouvez utiliser leinclude
fonction lorsque le fichier que vous essayez d'inclure est un simple fichier contenant d'autres moins importants, code.Et ma recommandation personnelle (pour le moins important, est d'aller pour les
require
fonction partout dans votre code alors qu'il est en phase de développement, tels que vous pouvez déboguer le code et, plus tard, de remplacer tous lesrequire
fonctions parinclude
fonction avant de passer à la production tels que si vous manquez tout les bugs qu'il n'affectera pas l'utilisateur final et le reste du code s'exécute correctement...Quand doit-on utiliser
require_once
ourequire
?La différence fondamentale entre
require
etrequire_once
estrequire_once
va vérifier si le fichier est déjà inclus ou pas si il est déjà inclus alors il ne comprend pas le fichier alors que lerequire
fonction d'inclure le fichier indépendamment de savoir si un fichier est déjà inclus ou pas.Donc, dans le cas où vous souhaitez insérer un morceau de code encore et encore utiliser le
require
fonction, alors que, si vous voulez inclure du code qu'une seule fois dans votre code, utilisezrequire_once
.Utilisation besoin fonction lorsque vous avez besoin de charger une classe, une fonction ou une dépendance.
Utilisation inclure fonction lorsque vous souhaitez charger un modèle de style de fichier
Si vous êtes encore confus, il suffit d'utiliser require_once pour tous les temps.
Ils sont tous des moyens d'inclure des fichiers.
Besoin de moyens il a besoin d'elle. Require_once signifie qu'il sera besoin, mais ne nécessite qu'une seule fois. Inclure signifie qu'il va inclure un fichier, mais il n'a pas besoin d'elle pour continuer.
Exemples:
Il y a aussi un include_once fonction qui comprend un fichier à la fois.
N'utilisez pas de majuscules, où j'ai, comme je suis en tapant à partir de mon téléphone.
une chose que j'ai remarqué, lors de l'utilisation d'inclure je ne peux accéder aux fichiers inclus des fonctions à partir du fichier inclus. Avec require_once, je peux exécuter cette fonction dans un deuxième required_once fichier.
aussi: je recommande d'ajouter
Parce que quand require_once tue la page, il peut parfois écho le répertoire des fichiers de votre site web
Voici une fonction personnalisée que j'ai fait pour exiger des fichiers:
exemple d'utilisation:
En gros, si vous avez besoin d'un chemin d'accès incorrect, PHP renvoie une erreur fatale et l'arrêt de la fonction est appelée, mais lorsque vous incluez une mauvaise voie, PHP va continuer l'exécution, mais il va juste afficher un avertissement indiquant que le fichier n'existe pas.
Du mot anglais besoin, PHP est dit que l'exécution de la page ou le fichier dépend du format de fichier requis.
De mon expérience, c'est la norme pour exiger des fichiers importants tels que les fichiers de configuration, classes de base de données et d'autres services publics.
require
a plus de généraux que deinclude
, car il doit analyser tout d'abord le fichier. Remplacement derequires
avecincludes
est souvent une bonne technique d'optimisation.require
ne pas analyser le fichier, pas plus queinclude
n'. Le_once
versions de ces fonctions, chacun a un peu de surcharge, mais comme d'autres l'ont dit, c'est presque négligeable dans la plupart des applications.Suffit d'utiliser require et include.
Parce que, pensez à la façon de travailler avec include_once ou require_once.
Qui est à la recherche pour le journal des données, qui permettent d'économiser inclus ou nécessaire fichiers PHP.
De sorte que c'est plus lent que de les inclure et de besoin.
Utilisant simplement comme ça...