Frage Unterschied zwischen require, include, require_once und include_once?


In PHP:

  • Wann sollte ich verwenden? require gegen include?
  • Wann sollte ich verwenden? require_once gegen include_once?

962
2018-03-10 16:13


Ursprung


Antworten:


Es gibt require und include_once auch.

Also sollte deine Frage sein ...

  1. Wann sollte ich verwenden? require gegen include?
  2. Wann sollte ich verwenden? require_once gegen require

Die Antwort auf 1 wird beschrieben Hier.

Die Funktion require () ist identisch mit include (), außer dass sie Fehler unterschiedlich behandelt. Wenn ein Fehler auftritt, generiert die Funktion include () eine Warnung, das Skript wird jedoch weiterhin ausgeführt. Die require () generiert einen schwerwiegenden Fehler, und das Skript wird beendet.

Die Antwort zu 2 kann gefunden werden Hier.

Die Anweisung require_once () ist identisch mit require (), außer dass PHP prüft, ob die Datei bereits enthalten ist, und wenn dies der Fall ist, muss sie nicht erneut hinzugefügt werden.


1172
2018-03-10 16:17



Benutzen

  • benötigen
    wenn die Datei ist erforderlich durch Ihre Anwendung, z.B. eine wichtige Nachrichtenvorlage oder eine Datei mit Konfigurationsvariablen, ohne die die App nicht funktionieren würde.

  • einmalig benötigt
    wenn die Datei Inhalt enthält, der bei der nachfolgenden Einbeziehung einen Fehler erzeugen würde, z. function important() { /* important code */} wird definitiv in Ihrer Anwendung benötigt, aber da Funktionen nicht neu deklariert werden können, sollten sie nicht erneut eingefügt werden.

  • einschließen wenn die Datei nicht benötigt wird und der Anwendungsfluss fortgesetzt werden sollte, wenn er nicht gefunden wird, z.
    Hervorragend für Vorlagen, die auf Variablen aus dem aktuellen Bereich oder etwas verweisen

  • include_once
    optionale Abhängigkeiten, die beim anschließenden Laden Fehler verursachen könnten, oder eine entfernte Dateieinblendung, die aufgrund des HTTP-Overheads nicht doppelt passieren soll

Aber im Grunde liegt es an Ihnen, wann Sie welche verwenden.


327
2018-03-10 16:25



Mein Vorschlag ist es einfach zu benutzen require_once 99,9% der Zeit.

Verwenden require oder include stattdessen impliziert, dass Ihr Code nicht woanders wiederverwendet werden kann, d. h. dass die Skripts, die Sie gerade ziehen, tatsächlich verwendet werden ausführen Code statt zu machen verfügbar eine Klasse oder einige Funktionsbibliotheken.

Wenn Sie Code benötigen, der vor Ort ausgeführt wird, handelt es sich um einen prozeduralen Code, und das müssen Sie tun ein neues Paradigma kennenlernen. Wie objektorientierte Programmierung, funktionsbasierte Programmierung oder funktionale Programmierung.

Wenn Sie bereits OO oder funktionale Programmierung machen, verwenden Sie include_once wird meistens sein Verzögerung Wo im Stapel finden Sie Bugs / Fehler. Willst du das wissen, die Funktion? do_cool_stuff() ist nicht verfügbar, wenn Sie später anrufen, oder der Moment, in dem Sie erwarten, dass es verfügbar ist indem Sie die Bibliothek benötigen? Im Allgemeinen ist es am besten, sofort zu wissen, ob etwas, das Sie brauchen und erwarten, nicht verfügbar ist, also verwenden Sie es einfach require_once.

Alternativ, in modernen OOP, einfach automatisches Laden Ihre Klassen bei der Verwendung.


269
2018-03-10 16:46



Unterschied zwischen _once-Funktionen und ohne _once-Funktionen: Ohne _once wird der Code wieder eingefügt, während mit _once-Funktionen PHP die enthaltenen Dateien nachverfolgt und nur einmal einbezieht.

Unterschied zwischen require und include: Wenn eine erforderliche Datei nicht gefunden wird, wird PHP einen fatalen Fehler ausgeben, während für das Include nur eine Warnung ausgegeben wird.


26
2018-03-10 16:18



include() wird eine Warnung ausgeben, wenn die Datei nicht eingeschlossen werden kann, aber der Rest des Skripts ausgeführt wird.

require() wirf einen E_COMPILE_ERROR und halten Sie das Skript an, wenn es die Datei nicht enthalten kann.

Das include_once() und require_once() Funktionen enthalten die Datei kein zweites Mal, wenn sie bereits enthalten ist.

Siehe die folgenden Dokumentationsseiten:


25
2017-11-03 11:48



Wann immer Sie verwenden require_once() kann in einer Datei verwendet werden, um eine andere Datei aufzunehmen, wenn Sie die aufgerufene Datei nur einmal in der aktuellen Datei benötigen. Hier im Beispiel habe ich eine test1.php.

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

und in einer anderen Datei, die ich test2.php genannt habe

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

Wenn Sie sehen, dass die Datei test1 zweimal benötigt wird, wird die Datei test1 einmal enthalten und beim zweiten Aufruf wird dies ignoriert. Und ohne anzuhalten wird die Ausgabe ein einziges Mal angezeigt.

Wann immer Sie 'include_once () `verwenden, können Sie in einer Datei eine andere Datei einfügen, wenn Sie die aufgerufene Datei mehr als einmal in der aktuellen Datei benötigen. Hier im Beispiel habe ich eine Datei namens test3.php.

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

Und in einer anderen Datei, die ich test4.php genannt habe

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

Wie Sie sehen, wird die Datei inklusive der Test3-Datei ein einziges Mal enthalten, aber die weitere Ausführung anhalten.


18
2017-09-29 09:42



Verwenden Sie "Einschließen" für wiederverwendbar PHP Vorlagen. Verwenden Sie "require" für die erforderlichen Bibliotheken.

"* _once" ist nett, weil es prüft, ob die Datei bereits geladen ist oder nicht, aber es macht nur Sinn für mich in "require_once".


16
2018-03-10 17:08



Der Unterschied liegt in dem Fehler, den die Befehle erzeugen. Mit require, die Datei, die Sie verwenden möchten, ist wirklich erforderlich und generiert daher ein E_ERROR wenn es nicht gefunden wird.

require() ist identisch mit include()  außer bei Misserfolg wird es auch einen tödlichen verursachen E_ERROR  Levelfehler.

include erzeugt nur ein E_WARNING Fehler, wenn es scheitert, der mehr oder weniger still ist.

Verwenden Sie es also, wenn die Datei benötigt wird, um den verbleibenden Code funktionsfähig zu machen, und Sie möchten, dass das Skript fehlschlägt, ist die Datei nicht verfügbar.


Zum *_once():

include_once() kann in Fällen verwendet werden, in denen die gleiche Datei während einer bestimmten Ausführung eines Skripts möglicherweise mehrfach enthalten und ausgewertet wird. In diesem Fall können Probleme wie Neudefinitionen von Funktionen, Neuzuweisungen von Variablenwerten usw. vermieden werden.

Gleiches gilt für require_once() Na sicher.


Referenz: require(), include_once()


11
2018-03-10 16:20