entre - require require_once include include_once php




Différence entre require, include, require_once et include_once? (18)

Une réponse après 7 ans pour 2018

Cette question a été posée il y a sept ans et aucune des réponses n'apporte d'aide pratique à la question. Dans la programmation PHP moderne, vous utilisez principalement une seule fois required_once pour inclure votre classe autoloader (autochargeur de composeur souvent), et il chargera toutes vos classes et fonctions (les fichiers de fonctions doivent être explicitement ajoutés au fichier composer.json pour être disponibles dans tous les autres fichiers). Si, pour une raison quelconque, votre classe n'est pas chargeable à partir de l'autochargeur, vous utilisez require_once pour le charger.

Ces jours, vous utilisez seulement pour diviser un gros morceau d'un fichier PHP. C'est principalement une grande définition de tableau. Dans ce cas, vous n'utilisez que require not require_once .

 <?php
// arr.php
return ['x'=>'y'];

 <?php
//main.php
$arr= require 'arry.php'

Si le fichier que vous avez l'intention d'utiliser contient quelque chose d'exécutable ou déclare certaines variables vous devez presque toujours utiliser require , car si vous utilisez require_one dans un autre endroit, votre code ne sera pas exécuté et / ou vos variables ne seront pas lancées silencieusement qui sont absolument difficiles à identifier.

Il n'y a pas de cas d'utilisation pratique pour include et include_once vraiment.

En PHP:

  • Quand dois-je utiliser require vs include ?
  • Quand devrais-je utiliser require_once vs include_once ?

  1. Utilisez require function lorsque vous avez besoin de charger une classe, une fonction ou une dépendance.

  2. Utilisez la fonction include lorsque vous voulez charger un fichier de style template

Si vous êtes toujours confus, utilisez simplement require_once pour tout le temps.


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.


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.


Du manual :

require() est identique à include() sauf en cas d'échec, il produira également une erreur de niveau E_COMPILE_ERROR fatale. 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.

La même chose est vraie pour les variantes de _once() .


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.


Il y a require et include_once aussi.

Donc, votre question devrait être ...

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

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

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 here .

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.


Ils sont tous des moyens d'inclure des fichiers:

Exiger signifie qu'il en a besoin. Require_once signifie qu'il en aura besoin mais ne l'exige qu'une seule fois. Inclure signifie qu'il inclura un fichier mais il n'en a pas besoin pour continuer.

Exemples:

Exiger 'filename' Require_once 'filename' Inclure 'filename'

Il y a aussi une fonction include_once qui inclut un fichier une fois.

Include_once 'nom de fichier'

N'utilisez pas de lettres majuscules lorsque je tape sur mon téléphone.

Merci pour votre temps.


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 s'il n'est pas trouvé.

require() est identique à include() sauf en cas d'échec, il produira également une E_ERROR niveau E_ERROR fatale.

include génère uniquement une erreur E_WARNING cas d'échec plus ou moins silencieux.

Donc, utilisez-le 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, ce qui évite des problèmes tels que redéfinitions de fonctions, réaffectations de valeurs variables, etc.

Même chose pour require_once() bien sûr.

Référence: require , php.net/manual/en/function.include-once.php


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

Utiliser require ou include implique à la place que votre code n'est pas réutilisable ailleurs, c'est-à-dire que les scripts que vous tirez exécutent réellement du code au lieu de rendre 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, l'utilisation de include_once va surtout retarder l' emplacement de la pile dans les bogues / erreurs. Voulez-vous savoir que la fonction do_cool_stuff() n'est pas disponible quand vous allez l'appeler plus tard, ou au moment où vous attendez qu'elle soit disponible en demandant la bibliothèque? Généralement, il est préférable de savoir immédiatement si quelque chose dont vous avez besoin et ce que vous attendez n'est pas disponible, utilisez simplement require_once .

Alternativement, dans OOP moderne, il suffit de autoload vos classes lors de l'utilisation.


Utilisation

  • require
    lorsque le fichier est requis par votre application, par exemple un modèle de message important ou un fichier contenant des variables de configuration sans lesquelles l'application se casserait.

  • here
    lorsque le fichier contient du contenu qui produirait une erreur lors de l'inclusion suivante, par exemple la 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 incluses à nouveau.

  • include lorsque le fichier n'est pas requis et le flux d'application doit continuer lorsqu'il n'est pas trouvé, par exemple
    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.


Utilisez "include" pour les modèles PHP réutilisables. 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".


Vous devez conserver les définitions de classe et de fonction organisées dans des fichiers.

Utilisez require_once pour charger les dépendances (classes, fonctions, constantes).

Utilisez require pour charger des fichiers de type template.


comprendre()

Il comprend un fichier spécifié. Il produira un avertissement s'il échoue à trouver le fichier et exécuter les scripts restants

exiger()

Il comprend un fichier spécifié. Il produira une erreur fatale s'il échoue à trouver le fichier et arrête l'exécution

include_once ()

Il comprend un fichier spécifié. un fichier a déjà été inclus, il ne sera plus inclus. Il produira un avertissement s'il échoue à trouver le fichier et exécuter les scripts restants.

Demandez une fois()

Il comprend un fichier spécifié. un fichier a déjà été inclus, il ne sera plus inclus. Il produira une erreur fatale s'il échoue à trouver le fichier et arrête l'exécution.


include() génère un avertissement lorsqu'il ne trouve pas de fichier, mais require_once() génère une erreur fatale.

Une autre chose est si le fichier est inclus avant. Puis require_once() ne l'inclura plus.


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

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

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

Voir les pages de documentation suivantes:


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

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

L'instruction require_once peut être utilisée pour inclure un fichier PHP dans un autre, lorsque vous devrez inclure le fichier appelé plus d'une 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.


  1. Quand faut-il utiliser require ou include ?

    Les fonctions require et include font la même tâche, ie inclut et évalue le fichier spécifié, mais la différence est require provoquera une erreur fatale lorsque l'emplacement du fichier spécifié est invalide ou pour toute erreur alors que include produira un avertissement et continuera l'exécution du code .

    Vous pouvez donc utiliser la fonction require dans le cas où le fichier que vous essayez d'inclure est le cœur du système et peut avoir un impact énorme sur le reste du code et vous pouvez utiliser la fonction include lorsque le fichier que vous essayez d'inclure est un fichier simple contenant un code moins important.

    Et ma recommandation personnelle (pour le code moins important) est d'aller pour la fonction require partout dans votre code pendant qu'il est en phase de développement de sorte que vous pouvez déboguer le code et ensuite remplacer toutes require fonctions require par include avant de le déplacer en production Si vous manquez des bugs, cela n'affectera pas l'utilisateur final et le reste du code s'exécutera correctement ...

  2. Quand doit-on utiliser require_once ou require ?

    La différence fondamentale entre require et require_once est require_once vérifiera si le fichier est déjà inclus ou non s'il est déjà inclus alors il n'inclura pas le fichier alors que la fonction require inclura le fichier indépendamment du fait que le fichier soit déjà inclus ou non.

    Donc, dans les cas où vous voulez inclure un morceau de code encore et encore, utilisez la fonction require alors que si vous voulez inclure du code une seule fois dans votre code, utilisez require_once .





require-once