Harry: include() vs require()

Beitrag lesen

Morgen

Da hast Du ein schlechtes Buch bzw. Netz erwischt.

Und Du hast eine schlechte Doku erwischt ;)

Mal im Ernst:
Die englische Variante der PHP-Doku ist immer wesentlich aktueller als die deutsche. Deswegen sollte man wann immer möglich der englischen Variante den Vorzug geben.

"Anders als include() wird require() immer die angegebene Datei
  einlesen, auch dann, wenn die Programmzeile, in der sie steht, nicht
[...]

In der englischen Variante ist dieser Absatz um einen wichtigen Zusatz erweitert:

"Note: _Prior_to_PHP_4.0.2_, the following applies: require() will always attempt to read the target file, even if the line it's on never executes. The conditional statement won't affect require(). [...]"

Somit gilt ab PHP 4.0.2 für den eigentlich Unterschied zwischen include und require:

"require() and include() are identical in every way except how they handle failure. include() produces a Warning while require() results in a Fatal Error. In other words, don't hesitate to use require() if you want a missing file to halt processing of the page. include() does not behave this way, the script will continue regardless."

Soll heißen: Wird die Datei hinter include() nicht gefunden, macht das Script halt weiter. Das kann u.U. recht böse sein. Bei require() gibt's einen dicken Fehler und das Script hält an.

So steht's in der PHP-Anleitung. include() "reagiert" also auf if- oder while-Blöcke wie jede andere Anweisung in so einem Block, d. h. include wird nur bei der jeweiligen Bedinung ausgeführt.

require() hingegen wird _immer_ ausgeführt.

Wie gesgt ... bis PHP 4.0.2.

Ciao,

Harry