Ofwel: het verschil zit hem puur in de foutafhandeling.require() is identical to include() except upon failure it will also produce a fatal E_ERROR level error. In other words, it will halt the script whereas include() only emits a warning (E_WARNING) which allows the script to continue.
Is het dan niet omgekeerd? Het is volgens mij include() die niet alles gaat lezen als er een deel ontbreekt, in de praktijk lijkt dit en verschil in foutafhandeling niet duidelijk te zijn, tenzij er een zeer specifieke geval moet zijn, en dat ontgaat mij volledig, dus wel verdwaasd in dit geval.Require in plaats van include omdat ik eigenlijk nooit scripts heb die door moeten gaan als er een deel ontbreekt.
Code: Selecteer alles
echo "Bla bla bla bla .. <br>\n";
if (1) {
return 10;
}
echo "En dan nog eens la la la ... <br>\n";
Code: Selecteer alles
echo "Bla2 bla bla bla .. <br>\n";
if (0>1) {
return 20;
}
echo "En dan nog eens la2 la la ... <br>\n";
Code: Selecteer alles
echo 'Include():<br />';
$incvar1 = include ('test1.php');
$incvar2 = include ('test2.php');
echo "File returned: '$incvar1'<br>\n";
echo "File returned: '$incvar2'<br>\n";
echo 'Require():<br />';
$reqvar1 = require ('test1.php');
$reqvar2 = require ('test2.php');
echo "File returned: '$reqvar1'<br>\n";
echo "File returned: '$reqvar2'<br>\n";
Include():
Bla bla bla bla ..
Bla2 bla bla bla ..
En dan nog eens la2 la la ...
File returned: '10'
File returned: '1'
Require():
Bla bla bla bla ..
Bla2 bla bla bla ..
En dan nog eens la2 la la ...
File returned: '10'
File returned: '1'
Het gaat erom wat er gebeurt op het moment dat je files gaat includen die niet bestaan.Is het dan niet omgekeerd? Het is volgens mij include() die niet alles gaat lezen als er een deel ontbreekt, in de praktijk lijkt dit en verschil in foutafhandeling niet duidelijk te zijn, tenzij er een zeer specifieke geval moet zijn, en dat ontgaat mij volledig, dus wel verdwaasd in dit geval.
Code: Selecteer alles
<?php
include('bestaatniet.php');
echo "Hallo!";
?>
Code: Selecteer alles
<?php
require('bestaatniet.php');
echo "Hallo!";
?>
test2.php resulteert in:Warning: include() [function.include]: Failed opening 'bestaatniet.php' for inclusion
Hallo!
Let op de "Hallo!" bij test1 (dus die gaat door na de gefaalde include), deze ontbreekt in de output van test2 (dus die stopt na de gefaalde require).Fatal error: require() [function.require]: Failed opening required 'bestaatniet.php'
Ja, dat heb ik wel opgemerkt. Dat is ook zo als je een functie gaat gebruiken die niet gedefinieerd is.Let op de "Hallo!" bij test1 (dus die gaat door na de gefaalde include), deze ontbreekt in de output van test2 (dus die stopt na de gefaalde require).
Code: Selecteer alles
mijnFunctie();
echo "I'm trying to appear after calling undefined function!";
En stopt na de gefaalde functie.Fatal error: Call to undefined function mijnFunctie() in ... on line 15
Include() bestaat niet voor niets, ik zit hier wel te denken aan paar gevallen waarin het interessant zou zijn :eusa_whistle:Nu heb ik zelf eigenlijk nooit scripts die door moeten gaan als er een benodigde include file ontbreekt, vandaar dat ik altijd require gebruik.