Require() en include()
- Berichten: 111
Require() en include()
PHP: doen deze twee functies juist hetzelfde of zijn er verschillen? Ik heb een paar testjes uitgevoerd en lijken op elkaar te lijken. Iemand tips en daarvoor dank bij voorbaat :eusa_whistle:
- Lorentziaan
- Berichten: 5.079
Re: Require() en include()
Ik ken geen php maar ik neem (opgrond van de termen) aan dat include(X) altijd include van X doet, terwijl require(X) X slechts 1 enkele maal zal includen, hoevaak het ook wordt aangeroepen?
Het lijkt mij overigens dat je het antwoord hierop wel zou moeten kunnen vinden met google.
Het lijkt mij overigens dat je het antwoord hierop wel zou moeten kunnen vinden met google.
Any sufficiently analyzed magic is indistinguishable from science.
Any sufficiently advanced technology is indistinguishable from magic.
There is no theory of protecting content other than keeping secrets Steve Jobs
Any sufficiently advanced technology is indistinguishable from magic.
There is no theory of protecting content other than keeping secrets Steve Jobs
- Berichten: 111
Re: Require() en include()
Wat je bedoelt is iets anders, er bestaan al soortgelijke functies in PHP genaamd include_once() en require_once(). Beter dan google is gewoon doen want met google zelf kom ik uiteindelijk een paar examples tegen. Als ik ze uittest dan krijg ik hetzelfde resultaat met beide functies en toch geloof ik dat er een verschil moet zijn. Bedankt anayway :eusa_whistle:
- Berichten: 17.659
Re: Require() en include()
http://nl.php.net/require
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.
"Knowledge speaks, but wisdom listens."
- Jimi Hendrix -
- Jimi Hendrix -
- Berichten: 5.679
Re: Require() en include()
In principe gebruik ik altijd require_once. Require in plaats van include omdat ik eigenlijk nooit scripts heb die door moeten gaan als er een deel ontbreekt. En _once omdat ik eigenlijk nooit files heb die meerdere keren geïnclude hoeven te worden.
Nog een tip: door er een @ voor te zetten kun je eventuele errors onderdrukken (zoals bij iedere functie). Doe ik vaak om nare potentiële foutmeldingen met interne info zoals bestands- en variabelenamen enzo niet naar de bezoeker te lekken.
Moet je er wel aan denken dat als een script helemaal niks meer lijkt te doen, dat er dan misschien een gefaalde @require_once ofzo ergens staat, waarvan je de error dan niet meer te zien krijgt.
Nog een tip: door er een @ voor te zetten kun je eventuele errors onderdrukken (zoals bij iedere functie). Doe ik vaak om nare potentiële foutmeldingen met interne info zoals bestands- en variabelenamen enzo niet naar de bezoeker te lekken.
Moet je er wel aan denken dat als een script helemaal niks meer lijkt te doen, dat er dan misschien een gefaalde @require_once ofzo ergens staat, waarvan je de error dan niet meer te zien krijgt.
In theory, there's no difference between theory and practice. In practice, there is.
- Berichten: 111
Re: Require() en include()
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.
test1.php
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'
- Berichten: 5.679
Re: Require() en include()
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.
Bijvoorbeeld:
test1.php
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'
Nu heb ik zelf eigenlijk nooit scripts die door moeten gaan als er een benodigde include file ontbreekt, vandaar dat ik altijd require gebruik.
In theory, there's no difference between theory and practice. In practice, there is.
-
- Berichten: 12.262
Re: Require() en include()
include() heeft eigenlijk alleen nut als je een gebruikersvriendelijke melding wilt maken van het ontbreken van een bestand.
$ok = @include('config.php');
if (!$ok)
{
echo 'doe eens ff uploaden die configuratie file!';
}
of iets in die geest.
Zelf gebruik eigenlijk altijd require(), voor bovenstaande aanpak zou ik een file_exists() aanpak beter vinden gezien het geen error oplevert die onderdrukt moet worden.
$ok = @include('config.php');
if (!$ok)
{
echo 'doe eens ff uploaden die configuratie file!';
}
of iets in die geest.
Zelf gebruik eigenlijk altijd require(), voor bovenstaande aanpak zou ik een file_exists() aanpak beter vinden gezien het geen error oplevert die onderdrukt moet worden.
Victory through technology
- Berichten: 111
Re: Require() en include()
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).
Stel ik heb dit:
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.
Bedank allemaal.