Unterschied von include() und require() ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abschneiden
aufgerufene datei
aufruf
code
dank
datei
ersetzt macht
fehler
folgenden code
funktion
http
inhalt
klammern
schleife
sinn
stehenden datei
unterschied
url
warnung
zitat
-
Hallo
was ist eigentlich der Unterschied zwischen include() und require() ?
beides läd doch den Inhalt einer anderen Datei, gibt es überhaupt einen Unterschied ?
und was von beidem sollte man verwenden, umd ein Script
je nach Anfrage aus "Bausteinen" zusammen zu stellen
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Im Grunde genommen - und das ist das verwirrende - bezwecken beide Funktionen das gleiche. Anstatt der o.a. Zeile wird jeweils der Inhalt der in Klammern stehenden Datei eingefügt. Das hat den Vorteil, dass man immer wieder vorkommende Daten (wie z.B. das Rahmenlayout dieser Webseite) in alle anderen Dateien einbinden kann, und wenn man mal was am Layout verändern will, man nur eine einzige Datei ändern muss, und nicht alle Dateien einzelnd. Nach neuesten Tests (Egon Schmid + Praktikantin) kann man in einer Datei sogar bis zu 4096 (!) require's bzw. include's machen.
Aber trotzdem gibt es den kleinen, aber feinen Unterschied zwischen den beiden Funktionen.
Die Benutzung von 'require' im Gegensatz zu 'include':
Die require Funktion lädt den Inhalt der in Klammern stehenden Datei in die aufrufende Datei ein. Der Aufruf wird also durch die aufgerufene Datei ersetzt. Problematisch wird das nun, wenn man die Funktion innerhalb einer Schleife benutzen will. Das darf man nämlich nicht. Wenn man z.B. drei Dateien nacheinander ausführen will (1.inc, 2.inc, 3.inc), so würde in einer Schleife mit 'require' die Datei 1.inc dreimal ausgeführt werden.
Quelle: http://www.dynamic-webpages.de/50.tutorials.php?dwp_tutorialID=1 -
Problematisch wird das nun, wenn man die Funktion innerhalb einer Schleife benutzen will. Das darf man nämlich nicht. Wenn man z.B. drei Dateien nacheinander ausführen will (1.inc, 2.inc, 3.inc), so würde in einer Schleife mit 'require' die Datei 1.inc dreimal ausgeführt werden.
Ich habe es gerade ausprobiert und die drei Dateien wurden nacheinander aufgerufen und arbeiteten. Ansonsten würde das doch auch keinen Sinn machen. -
ahh ok Danke
also merke (ich mir): nutze nie require() innerhalb einer Schleife
DANKE für das Erklärungs-Zitat
EDIT: ... zum test von drafed-map ... vielleicht war das vor PHP5 mal so
und ist jetzt kein Problem mehr, nur so ne Vermutung
aber der Teil aus dem Zitat: "Der Aufruf wird also durch die aufgerufene Datei ersetzt."
macht echt keinen Sinn, das würde ja den folgenden Code abschneiden ?!
Beitrag zuletzt geändert: 5.10.2011 16:14:59 von spiele2u -
spiele2u schrieb:
Tut es auch nicht. Und wenn ich in der Schleife
aber der Teil aus dem Zitat: "Der Aufruf wird also durch die aufgerufene Datei ersetzt."
macht echt keinen Sinn, das würde ja den folgenden Code abschneiden ?!
stehen habe, bekommt require() ja genauso immer einen neuen Parameter, wie include() ihn bekommen würde.require($i.'.inc');
-
Ich habs nur kopiert :p Aber gerade auch mal mit dem selben Ergebnis getestet. Die von mir zitierte Aussage ist also falsch.
Aber ich finde, dass der eigentliche Unterschied von PHP.net wohl am treffendsten beschrieben wird:
require() entspricht im Wesentlichen include(), wirft aber im Fehlerfall einen E_COMPILE_ERROR Fehler. Es beendet also die Programmausführung während include() nur eine Warnung (E_WARNING) generiert und so die weitere Programmausführung gestattet.
http://php.net/manual/de/function.require.php
Beitrag zuletzt geändert: 6.10.2011 23:10:09 von fabo -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage