2009-02-27 11 views

Antwort

29

require erfordert, include enthält.

Laut Handbuch:

require() identisch ist(), außer bei einem Fehler enthalten sie einen tödlichen E_ERROR Level-Fehler erzeugen wird. Mit anderen Worten, es stoppt das Skript, während include() nur eine Warnung (E_WARNING) ausgibt, die es dem Skript erlaubt, fortzufahren.

+0

verwenden Sie, um anders zu sein, obwohl :-) – dusoft

+1

True, aber das interessante wäre zu verstehen, wann man das eine oder andere benutzt. – JDelage

0

Per http://www.alt-php-faq.org/local/78/:

Im Gegensatz zu include(), require() wird immer in der Zieldatei zu lesen, auch wenn die Linie auf, es ist nie ausgeführt. Wenn Sie eine Datei bedingt aufnehmen möchten, verwenden Sie include(). Die bedingte Anweisung wirkt sich nicht auf require() aus. Wenn jedoch die Zeile, in der require() auftritt, nicht ausgeführt wird, wird auch keiner der Code in der Zieldatei ausgeführt.

+1

Der einzige Unterschied zwischen include() und require() besteht darin, dass bei einem Fehler (d. H. Wenn die Datei nicht gefunden wird) require() einen Fehler ausgibt, während include() eine Warnung ausgibt. – mjs

3

Der Unterschied ist dies: Include wird nicht fehlschlagen, wenn es die Ressource nicht finden kann, erfordern wird. Ehrlich gesagt, ist es irgendwie albern, dass es überhaupt existiert, denn wenn du versuchst, eine Ressource zu laden, zählst du ziemlich darauf, dass es da ist. Wenn Sie etwas verwenden möchten, würde ich empfehlen, require_once immer zu verwenden, so dass Sie nicht in Kollisionen geraten (dh wenn ein anderes Skript die gleiche Datei benötigt) und Ihr Code immer wie vorgesehen funktioniert, weil Sie die Ressourcen kennen einschließlich sind dort (sonst versagt es).

1

Wenn eine Datei optional ist, fügen Sie sie hinzu. Zum Beispiel könnten Sie eine Datei "breaking-news.txt" haben, die erstellt wird, wenn es Neuigkeiten gibt, aber nicht existiert, wenn es keine gibt. Es könnte enthalten sein, ohne dass das Skript bricht, wenn es keine neuen Nachrichten gibt.

Wenn die Datei benötigt wird, damit der Rest des Skripts ordnungsgemäß funktioniert, fordern Sie sie an.

4

Wie andere gesagt haben, wenn "require" die gesuchte Datei nicht findet, wird die Ausführung angehalten. Wenn include die gesuchte Datei nicht ablegt, wird die Ausführung fortgesetzt.

Im Allgemeinen sollte beim Importieren von code/class/function-Bibliotheken require verwendet werden. Wenn Sie versuchen, eine Funktion aufzurufen, eine Klasse instanziieren usw. und die Definitionen nicht vorhanden sind, werden schlechte Dinge passieren. Daher benötigen Sie benötigen PHP, um Ihre Datei, und wenn es nicht möglich ist, Sie aufhören.

Verwenden Sie Include, wenn Sie PHP verwenden, um Inhalte auszugeben oder Code auszuführen, der nicht unbedingt späteren Code zerstört, wenn er nicht ausgeführt wird. Das klassische Beispiel hierfür ist das Implementieren einer Ansicht in einem Modell/Ansicht/Controller-Framework. Nichts Neues sollte in einer Ansicht definiert werden, noch sollte es den Anwendungszustand ändern. Daher ist es in Ordnung, Include zu verwenden, da ein Fehler andere Dinge, die in der Anwendung passieren, nicht unterbricht.

Eine kleine Tangente. Es gibt viele widersprüchliche Informationen und Fehlinformationen bezüglich der Leistung von include require und require_once vs. include_once. Sie verhalten sich radikal unterschiedlich in verschiedenen Situationen/Anwendungsfällen. Dies ist einer dieser Orte, an denen Sie wirklich den Unterschied in Ihrer eigenen Anwendung messen müssen.

+0

Vielen Dank für die Bereitstellung des Anwendungsfalls für include. Ich konnte nicht verstehen, wann ich es vorher benutzen sollte. – JDelage

0

In einfacher Sprache, wenn wir erfordern, müssen wir sicher sein, dass die Datei in dieser Ära existiert, während es im Falle des Einschließens nicht notwendig ist.Aber versuchen Sie sicherzustellen, dass die Datei existiert.

-1

Require() und include() sind die gleichen in Bezug auf die Handhabung Fehler. require() führt jedoch zu einem schwerwiegenden Fehler und ermöglicht nicht die Verarbeitung der Seite. d. h. Mit "include" wird das Skript fortgesetzt.

+0

Sowohl "include" als auch "require" sind ** Sprachkonstrukte **. Sie verwenden keine Klammern. – Jimbo

0
Include and require are identical, except upon failure: 

require will produce a fatal error (E_COMPILE_ERROR) and stop the script 
include will only produce a warning (E_WARNING) and the script will continue 

Sie mit examle verstehen können include ("test.php"); echo "\ nDiese Zeile wird gedruckt";

Ausgang: Warning: include (test.php): failed to open stream: Datei oder ein Verzeichnis in/var/www/........ Diese Linie wird

erfordern drucken werden ("test.php"); echo "\ nDiese Zeile wird gedruckt"; Warnung: erfordern (test.php): Fehler beim Öffnen des Streams: Keine solche Datei oder Verzeichnis in/var/www/....

Verwandte Themen