Jump to content
Sign in to follow this  
haraldos

Unterschied zwischen require und include

Recommended Posts

Hallo,

was require und include grundsätzlich bewirken ist mir zwar bekannt, weil zigmal benutzt. Allerdings ist mir der genaue Unterschied zwischen den beiden nicht wirklich klar...


Ist es richtig dass bei fehlender Include Datei keine Fehlermeldung kommt, bei fehlender Require allerdings schon? Und was genau hat es z.b. mit "require_once" auf sich? Gibts das auch bei includes?


Danke und Gruß, haraldos

Share this post


Link to post
Share on other sites
require() und include() sind in jeder Hinsicht gleichwertig mit der einen Ausnahme: der Umgang mit Fehlern. include() erzeugt ein Warning während require() in einem Fatal Error endet. Mit anderen Worten: scheuen Sie sich nicht, require() zu benutzen, wenn Sie möchten, dass eine fehlende Datei die Ausführung ihres Skripts beendet. include() verhält sich anders, ihr Skript wird weiterhin ausgeführt. Stellen Sie außerdem sicher, dass Sie einen gültigen include_path gesetzt haben.
http://www.php.net/require ;-)


Die anderen 2 Punkte die bei dem Link von IndoorJo beschrieben werden kann ich nicht nachvollziehen, zumal der Effekt bei mir noch nie aufgetreten ist ...


require_once()/include_once():

Vom Prinzip her genau das gleiche wie include()/require(), nur mit dem Unterschied dass die angegebene Datei nur einmal im Script eingebunden wird.

Sprich würdest du zu Beginn eines Script die world.php in der echo 'Hello World!'; steht per include_once()/require_once() einbinden und dann nochmal am Ende des Scripts wird diese nur zu Beginn eingebunden ;-)

Share this post


Link to post
Share on other sites
Der dritte Unterschied bezieht sich auf die Fehlerbehandlungsroutine der beiden Funktionen. Während include() bei einem Aufruf einer nicht existierenden Datei lediglich eine Warnung ausgibt, unterbricht require() komplett die Ausführung des Skriptes und gibt einen Fehler aus.

Kann es sein, dass man das in der php.ini angeben kann, wie require() beim "Nichtfinden" reagiert?

Share this post


Link to post
Share on other sites

Vielen Dank schon mal! :-D


Während include() bei einem Aufruf einer nicht existierenden Datei lediglich eine Warnung ausgibt
Gibt es denn auch eine Möglichkeit diese Warnung zu unterdrücken?

Share this post


Link to post
Share on other sites

Fehlermeldungen haben ja die positive Eigenschaft, dass man sieht wenn was im Argen liegt. Deswegen möcht ich die auch nicht komplett unterdrücken.


Nur in diesem speziellen Fall wäre die Fehlermeldung nicht gewünscht, weil wenn die Datei fehlt dass auch so gewollt ist.

Share this post


Link to post
Share on other sites

ui, viel input... aber interessant! :H:

Werd ich mir auch mal ansehen, aber wenn das mit dem @ schon reicht werd ich mich für diese Methode entscheiden, weil mit dem Code noch andere umgehen müssen und ich die Geschichte so simpel wie möglich halten möchte...

Share this post


Link to post
Share on other sites

ein @ kann auch dann sinnvoll sein, um sein eigenes warning auszugeben:

if(!@mail(...))
  echo"Konnte mail nicht versenden";

Share this post


Link to post
Share on other sites
Guest

Also Fehler unterdrücken ohne eine Fehlermeldung auszugeben geht so:

 

@require('connect.php');


Einfach ein @ vor die Anweisung. Wurde ja schon gepostet


Eine Script abbrechen und eine Fehlermeldung ausgeben geht so:

 

require('connect.php') or die ("Datei konnte nicht eingebunden werden");


Mit or die wird das Script abgebrochen wenn die Datei nicht eingebunden werden konnte. Zusätzlich wird eine Fehlermeldung ausgegeben.


Wenn man keine Fehlermeldung ausgeben will, kann man einfach die Funktion exit(); benutzen.

Share this post


Link to post
Share on other sites

Habe mich für die @include Variante entschieden, tut alles was ich will, funktioniert einwandfrei.


Vielen Dank nochmal ;-)

Share this post


Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...