Php vereist een eenmalige beschrijving. Wat is beter om te gebruiken: vereisen of opnemen? Hoe verschilt include() van require()

Als de functies in een apart bestand worden geplaatst, kunt u deze met twee instructies, require en include, verbinden. De verklaringen hebben het volgende formaat:
vereisen(<Имя файла>);
vereisen<Имя файла>;
erbij betrekken(<Имя файла>);
erbij betrekken<Имя файла>;
Laten we de functie f_Sum() verplaatsen naar een apart bestand ( Lijst 17) en verbind deze met behulp van de vereiste operator ( Lijst 16).

Lijst 16. Met behulp van de require-instructie

Lijst 17. Inhoud van het script.inc-bestand

U kunt bijvoorbeeld een script.inc-bestand maken met Notepad++. Opgemerkt moet worden dat een opgenomen bestand elke extensie kan hebben, hoewel het gebruikelijk is om de opgenomen bestanden de extensie inc te geven (voor "include").
Laten we proberen het bestand script.inc te openen met een webbrowser. Als gevolg hiervan wordt de broncode weergegeven in het webbrowservenster:

Om deze reden moet u de include-bestanden in een map plaatsen die alleen toegankelijk is voor het script, maar niet via internet. Bij het installeren en configureren van PHP hebben we de locatie van de meegeleverde bestanden gespecificeerd in de include_path-richtlijn van het php.ini-bestand:

include_path = ".;C:\php5\includes"

Hier, gescheiden door puntkomma's, zijn er twee plaatsen waar u naar opgenomen bestanden kunt zoeken:
□ . (punt) - in dezelfde map als het uitvoerbare bestand;
C:\php5\includes - in de map include (c:\php5\includes).
Met andere woorden: als er geen include-bestand wordt gevonden in dezelfde map als het uitvoerbare bestand, zal de tolk zoeken in de include-map (c:\php5\includes).
U kunt het include-bestand ook opslaan met de php-extensie. In dit geval wordt de broncode niet weergegeven in het webbrowservenster.

Als het meegeleverde bestand uitvoerbare code bevat, moeten PHP-descriptors worden opgegeven. Anders wordt de PHP-code weergegeven als platte tekst en wordt bij het aanroepen van de daarin gedefinieerde functies een foutmelding weergegeven:
functie f_Sum($x, $y=2) ( return ($x + $y); )
Fatale fout: oproep naar ongedefinieerde functie f_Sum() in
C:\Apache2\htdocs\index.php op regel 9
Met andere woorden: het opgenomen bestand bevat mogelijk geen PHP-code. Laten we bijvoorbeeld de header en de functie f_Sum() in het bestand header.inc ( Lijst 19), en de voettekst van het bestand footer.inc ( vermelding 20). Vervolgens zullen we deze bestanden verbinden met het hoofdscript ( vermelding 18).

Lijst 18. HTML-code in een include-bestand plaatsen

Lijst 19. Inhoud van het header.inc-bestand

Functies

Lijst 20. Inhoud van het footer.inc-bestand



IN lijst 21 De bron-HTML-code wordt weergegeven na het uitvoeren van het vorige programma.

Lijst 21. HTML-broncode

Functies 7

Op deze manier kunt u voor veel pagina's sjablonen maken. Wanneer de tolk een require-instructie tegenkomt, zal de inhoud van het include-bestand deel uitmaken van de pagina. Als het bestand niet kan worden geladen, genereert de instructie een onherstelbare fout en wordt het script beëindigd.
In plaats van de require-instructie kunt u de include-instructie gebruiken. Als het include-bestand niet wordt gevonden, geeft de instructie een foutmelding weer, maar blijft het script worden uitgevoerd. Als dit bestand functies bevat, zal elke functieaanroep vanuit dit bestand ook een fout genereren.

De include-instructie retourneert true als het bestand wordt geladen, en false als er een fout is. U kunt de foutmelding onderdrukken met de operator @ ( Lijst 22).

Lijst 22. Het onderdrukken van de foutmelding

29 antwoorden

Er zijn ook require en include_once .

Je vraag zou dus moeten zijn...

  1. Wanneer moet ik vereisen en opnemen gebruiken?
  2. Wanneer moet ik require_once versus require gebruiken

De functie require() is identiek aan include(), behalve dat deze anders omgaat met fouten. Als er een fout optreedt, genereert de functie include() een waarschuwing, maar het script blijft doorgaan met uitvoeren. Require() genereert een fatale fout en het script stopt.

De instructie require_once() is identiek aan require(), behalve dat PHP zal controleren of het bestand al is opgenomen en, als dat zo is, het niet opnieuw zal opnemen (vereisen).

Mijn suggestie is om require_once 99,9% van de tijd gewoon te gebruiken.

Als u in plaats daarvan require of include gebruikt, betekent dit dat uw code niet elders kan worden hergebruikt, dat wil zeggen de scripts die u daadwerkelijk typt uitvoeren, in plaats van een klasse of een aantal functiebibliotheken aan te bieden,

Als u code nodig heeft/opneemt die ter plaatse wordt uitgevoerd, is dit procedurele code en heeft u deze nodig leer een nieuw paradigma. Vergelijkbaar met objectgeoriënteerd programmeren, functioneel programmeren of functioneel programmeren.

Als je al bezig bent met OO of functioneel programmeren, zal het gebruik van include_once meestal worden uitgesteld als je bugs/bugs op de stapel aantreft. U wilt weten dat de functie do_cool_stuff() niet beschikbaar is als u deze later gaat aanroepen, of op het moment dat u verwacht dat deze beschikbaar is, een bibliotheek nodig? Het is over het algemeen beter om van tevoren te weten of iets dat je nodig hebt en wat je kunt verwachten niet beschikbaar is, dus gebruik gewoon require_once .

Als alternatief kunt u in moderne OOP uw klassen automatisch laden wanneer deze worden gebruikt.

Verschil tussen _once-functies en _once-functies: Zonder code zal _once opnieuw worden ingeschakeld, terwijl PHP met _once-functies de opgenomen bestanden bijhoudt en deze slechts één keer zal inschakelen.

Verschil tussen require en include: Als het vereiste bestand niet wordt gevonden, genereert PHP een fatale fout, terwijl include alleen een waarschuwing geeft.

include() zal een waarschuwing geven als het bestand niet kan worden opgenomen, maar de rest van het script wordt uitgevoerd.

require() zal E_COMPILE_ERROR genereren en het script stoppen als het bestand niet kan worden opgenomen.

De functies include_once() en require_once() zullen het bestand niet nogmaals opnemen als het al is opgenomen.

Zie de volgende documentatiepagina's:

Telkens wanneer u require_once() gebruikt, kunt u dit in een bestand gebruiken om een ​​ander bestand op te nemen als u het bestand nodig heeft dat u zojuist in het huidige bestand hebt opgegeven. Hier in het voorbeeld heb ik test1.php.

en in een ander bestand dat ik test2.php noemde

als je naar m kijkt, heb je het bestand test1 twee keer nodig, maar het bestand bevat één keer test1 en als je het voor de tweede keer aanroept, wordt het genegeerd. En zonder te stoppen wordt de uitvoer één keer weergegeven.

Telkens wanneer u "include_once()" gebruikt, kan het in een bestand worden gebruikt om een ​​ander bestand op te nemen als u het bestand meerdere keren nodig heeft in het huidige bestand. Hier in het voorbeeld heb ik een bestand met de naam test3.php.

En in een ander bestand dat ik test4.php noemde

aangezien je naar m inclusief bestand kijkt, zal test3 het bestand één keer opnemen, maar de verdere uitvoering stoppen.

Het verschil is de fout die de opdrachten genereren. Met require heeft het daadwerkelijk het bestand nodig dat u wilt gebruiken en genereert het dus E_ERROR als het niet wordt gevonden.

require() is identiek aan include() behalve dat een fout ook zal resulteren in een fataal foutniveau E_ERROR .

include genereert een E_WARNING-fout als het mislukt, wat min of meer stil is.

Gebruik het dus als het bestand nodig is om de resterende code uit te voeren en u wilt dat het script mislukt omdat het bestand niet beschikbaar is.

Voor *_once() :

include_once() kan worden gebruikt in gevallen waarin hetzelfde bestand meerdere keren kan worden opgenomen en geëvalueerd tijdens de uitvoering van een bepaald script. In dit geval kan het dus problemen helpen voorkomen, zoals het overschrijven van functies, het overschrijven van variabele waarden, enz. d.

Hetzelfde geldt natuurlijk voor require_once() .

Deze vraag werd zeven jaar geleden gesteld en geen van de antwoorden biedt enige praktische hulp op dit gebied. Bij moderne PHP-programmering gebruik je in principe require_once slechts één keer om je autoloader (vaak de autoloader van composer) in te schakelen en deze zal al je klassen en functies laden (functiebestanden moeten expliciet worden toegevoegd aan composer.json om beschikbaar te zijn in alle andere bestanden). Als uw klasse om de een of andere reden niet vanuit de autoloader wordt geladen, gebruikt u require_once om deze te laden.

Tegenwoordig hoef je alleen maar een groot deel van een PHP-bestand te splitsen. Dit is eigenlijk de definitie van een grote array. In dergelijke gevallen gebruikt u alleen require require_once .

"j"];

Als het bestand dat je gaat gebruiken iets uitvoerbaars bevat of een aantal variabelen declareert, zul je bijna altijd require moeten gebruiken, want als je require_once elders gebruikt, wordt je code niet uitgevoerd en/of worden je variabelen niet stil geactiveerd. waardoor fouten ontstaan ​​die absoluut moeilijk te identificeren zijn.

De praktijk van include en include_once wordt praktisch niet gebruikt.

U moet klasse- en functiedefinities in bestanden opslaan.

Gebruik require_once() om te laden afhankelijkheden

Gebruik require() om te laden sjabloonachtige bestanden.

Gebruik include_once() om te laden optionele afhankelijkheden(klassen, functies, constanten).

Gebruik include() om te laden optionele sjabloonachtige bestanden.

vereist zal resulteren in een fatale fout (E_COMPILE_ERROR) en het script stoppen.

inschakelen zal een waarschuwing geven (E_WARNING) en het script zal doorgaan.

Exploitant vereisen_eenmaal kan worden gebruikt om een ​​PHP-bestand in een ander bestand op te nemen, wanneer u het aangeroepen bestand mogelijk meerdere keren moet opnemen.

Als a.php een PHP-script is dat b.php aanroept met require_once(), en b.php niet vindt, stopt a.php met uitvoeren, wat een fatale fout veroorzaakt.

erbij betrekken()

Het bevat het opgegeven bestand. Er wordt een waarschuwing gegeven als het bestand niet kan worden gevonden en de overige scripts niet kunnen worden uitgevoerd

vereist()

Het bevat het opgegeven bestand. Dit zal een fatale fout opleveren als het bestand niet kan worden gevonden en de uitvoering stopt

Het bevat het opgegeven bestand. het bestand is al opgenomen, het wordt niet langer opgenomen. Het geeft een waarschuwing als het het bestand niet kan vinden en de rest van de scripts niet kan uitvoeren.

Het bevat het opgegeven bestand. het bestand is al opgenomen, het wordt niet langer opgenomen. Dit zal een fatale fout opleveren als het bestand niet kan worden gevonden en de uitvoering stopt.

Identiek aan include/require, behalve dat PHP controleert of het bestand al is opgenomen, en zo ja, het niet opnieuw opneemt (vereist).

In het tijdperk van PSR-0/PSR-4 autoloaders kan het helemaal niet nodig zijn om instructies te gebruiken als je alleen maar een aantal functies/klassen beschikbaar wilt maken voor je code (je moet uiteraard nog steeds require_once gebruiken in je bestandsbootstrap en voeg sjablonen toe als u nog steeds PHP als uw sjabloonengine gebruikt).

require() is identiek aan include() behalve dat een fout ook zal resulteren in een fataal foutniveau E_COMPILE_ERROR . Met andere woorden, het stopt het script, terwijl include() alleen een waarschuwing geeft (E_WARNING) waardoor het script kan doorgaan.

Hetzelfde geldt voor _once() opties.

Ik gebruikte de functie zoals hieronder:

Functie doSomething() ( require_once(xyz.php); .... )

Constante waarden zijn vastgelegd in xyz.php.

Ik moet deze doSomething()-functie aanroepen vanuit een ander PHP-scriptbestand.

Maar ik observeerde het gedrag bij het aanroepen van deze functie in een lus, want de eerste iteratie kreeg doSomething() constante waarden binnen xyz.php, maar later kon elke iteratie van doSomething() geen constante waarden krijgen die in xyz werden gedeclareerd. php.

Ik heb mijn probleem opgelost door over te schakelen van require_once() naar include() . De bijgewerkte doSomething()-code ziet er als volgt uit:

Functie doSomething() ( include(xyz.php); .... )

Nu ontvangt elke iteratieve aanroep van doSomething() de constanten die zijn gedefinieerd in xyz.php .

Wanneer moet u vereisen of opnemen gebruiken?

De require- en include-functies voeren dezelfde taak uit, dat wil zeggen het gespecificeerde bestand opnemen en evalueren, maar het verschil require zal resulteren in een fatale fout als de gespecificeerde bestandslocatie ongeldig is of bij een fout, terwijl include een waarschuwing genereert en doorgaat. het uitvoeren van de code.

U kunt dus de functie require gebruiken als het bestand dat u probeert op te nemen, is het hart van het systeem en kan een enorme impact hebben op de rest van de code, en misschien wil je de include-functie gebruiken als het bestand dat je probeert op te nemen een eenvoudig bestand is dat minder belangrijke code bevat.

En mijn persoonlijke aanbeveling (voor minder belangrijke code) is om de require-functie overal in je code te gebruiken terwijl deze in ontwikkeling is, zodat je fouten in de code kunt debuggen en vervolgens alle require-functies kunt vervangen door include voordat je deze naar productie verplaatst, zodat als Als u fouten mist, heeft dit geen invloed op de eindgebruiker en wordt de rest van de code correct uitgevoerd...

Wanneer moet u require_once of require gebruiken?

Het belangrijkste verschil tussen require en require_once is dat require_once controleert of het bestand is opgenomen of niet. Als het al is opgenomen, zal het het bestand niet bevatten, terwijl de require-functie het bestand zal opnemen, ongeacht of het bestand is opgenomen of niet.

Dus als je steeds opnieuw een stukje code wilt toevoegen, gebruik dan de require-functie, terwijl als je bepaalde code slechts één keer in je code wilt opnemen, require_once gebruikt.

Dit zijn allemaal manieren om bestanden op te nemen.

Vereisen betekent dat het nodig is. Require_once betekent dat het vereist is, maar slechts één keer. Opnemen betekent dat het bestand wordt opgenomen, maar dat het niet nodig is om door te gaan.

Vereist "bestandsnaam" Require_once "bestandsnaam" Neem "bestandsnaam" op

Er is ook de functie include_once, die het bestand één keer opneemt.

Include_once "bestandsnaam"

Gebruik geen hoofdletters als ik op mijn telefoon schrijf.

Kortom, als je het verkeerde pad wilt, genereert PHP een fatale fout en wordt de shutdown-functie aangeroepen, maar als je het verkeerde pad inschakelt, zal PHP doorgaan met uitvoeren, maar het zal alleen een waarschuwing tonen dat het bestand niet bestaat.

Van het Engelse woord vereist zegt PHP dat de uitvoering van een pagina of bestand afhankelijk is van het vereiste bestand.

In mijn ervaring is dit de norm, waarbij belangrijke bestanden nodig zijn, zoals configuratiebestanden, databaseklassen en andere belangrijke hulpprogramma's.

Bij het ontwikkelen van een website en elke complexiteit moet u zich allereerst concentreren op de juistheid van de code. Als u bijvoorbeeld alle code met meerdere bestanden op één pagina maakt, leidt dit tot verwarring en groot ongemak. En om dit te doen, moet u de bestanden in categorieën indelen en ze vervolgens op de juiste plaatsen met de hoofdcode verbinden. Deze methode kan 'included files' worden genoemd. Dit is een vrij eenvoudige naam, maar voor iemand die dit onderwerp voor het eerst tegenkomt, kan het zo worden genoemd. En om alle meegeleverde bestanden in één code te kunnen verzamelen, moet u toepassen wat in het vorige artikel wordt beschreven, of de instructies gebruiken vereisen en vereisen_eenmaal die in deze tekst worden beschreven.

Praktische instructies vereisen en vereisen_eenmaal voer dezelfde functies uit als instructies include en include_once, met uitzondering van enkele punten.

De syntaxis voor deze instructies is:

Require_once 'config.php'; - instellingenbestand
require_once 'header.php'; - sitekop
vereist 'left.php'; - linkerzijbalk
vereist 'content.php'; — inhoud van de site
vereist 'footer.php'; - voettekst van de site

En het verschil is dit. Bij het verwerken van code converteert PHP het script eerst naar een interne representatie, waarna het de code regel voor regel begint te verwerken. En als PHP een bestand vindt in de code die bij de instructie hoort erbij betrekken, en na het laden van het bestand schakelt het volledig over naar de uitvoering ervan, converteert het bestand naar een interne representatie en voert het dan pas stap voor stap uit...

Hier zijn de instructies vereisen werkt een beetje anders. Het bestand dat bij de hulp hoort, wordt vertaald voordat het script wordt uitgevoerd, met andere woorden: op het moment dat alle code wordt verwerkt, is dit bestand al vertaald!!! En vandaar de conclusie: bestanden verbonden door instructies vereisen- werkt sneller. En voor mij heeft deze instructie bijvoorbeeld de voorkeur. Maar er is natuurlijk één MAAR! Wanneer de browser een pagina laadt, kan het internet crashen en kan de gebruiker alleen dat deel van de pagina zien dat al is geladen. Of als er een verwerkingsfout optreedt, gaat de verwerking niet verder dan het bevroren bestand. Maar dit gebeurt zelden op een website, dus deze instructie verdient nog steeds de voorkeur.

Ik was het bijna vergeten. Instructies vereisen_eenmaal- dient ook de rol om een ​​bestand slechts één keer in de algehele code op te nemen, zodat er geen herhalingen zijn.

Dat is bijna alles wat u moet weten over het verbinden van bestanden met de algemene codeschrijfstroom. Diepere kennis komt meestal via het leerproces en afhankelijk van de behoeften, wat ik uiteraard niet kan voorspellen. Bedankt voor uw aandacht en sorry voor de presentatie van deze onderwerpen door de auteur.

Juli 2019
ma W wo Do Vr Zat Zon
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

RECLAME

    De include-instructie in PHP, de include_once-instructie in php, opgenomen bestanden. Bij het ontwikkelen van een eenvoudige dynamische website of geavanceerdere programma's is dit onmogelijk

    De structuur van de site-engine, waaruit de site-engine bestaat, het site-controlepaneel, de sjabloon-engine. In het vorige artikel werd dat beschreven

    Wat is een website-engine, hoe maak je een website-engine, een websitebeheersysteem in PHP. Om te begrijpen wat het is

De constructie van vereist insluitsels

Ontwerp vereisen Hiermee kunt u bestanden in een PHP-script opnemen om een ​​PHP-script uit te voeren. Algemene syntaxis vereisen zo een:

bestandsnaam vereisen;

Bij het starten (precies bij het opstarten, niet tijdens de uitvoering!) van het programma, zal de tolk de instructie eenvoudigweg vervangen door de inhoud van het bestand bestandsnaam (dit bestand kan ook een PHP-script bevatten, zoals gebruikelijk omlijst met tags En ?> ). Bovendien zal het dit doen onmiddellijk voordat het programma wordt gestart (in tegenstelling tot erbij betrekken, die hieronder wordt besproken). Dit kan erg handig zijn als u verschillende sjabloonpagina's met HTML-code in de scriptuitvoer wilt opnemen. Hier is een voorbeeld:

Header.html-bestand:

Het is een titel

Voettekst.html-bestand:
Thuisbedrijf, 2005.

Script.php-bestand
vereist "header.htm";
// Het script geeft de hoofdtekst van het document zelf weer
vereist "footer.htm";
?>

Het ontwerp dus vereisen Hiermee kunt u PHP-scripts samenstellen uit verschillende afzonderlijke bestanden, zoals html-pagina's en php-scripts.

Ontwerp vereisen ondersteunt de opname van externe bestanden (sinds PHP 4.3.0). Bijvoorbeeld:

// Het volgende voorbeeld werkt niet omdat er wordt geprobeerd een lokaal bestand op te nemen
vereisen "file.php?foo=1&bar=2" ;
// Het volgende voorbeeld werkt
vereisen ;
?>

! Ontwerp vereisen Hiermee kunt u externe bestanden opnemen als deze functie is ingeschakeld in het PHP-configuratiebestand.

Inclusief externe bestanden

Met PHP kunt u met URL-objecten werken, zoals met gewone bestanden. Packers, die standaard beschikbaar zijn, worden gebruikt om met externe bestanden te werken via het ftp- of http-protocol.

Als "fopen wrapper URL's" zijn opgenomen in PHP (zoals in de standaardconfiguratie), kunt u een bestand opgeven dat moet worden opgenomen met behulp van een URL (via HTTP) in plaats van een lokaal pad. Als de doelserver het doelbestand interpreteert als PHP-code, kunnen variabelen worden doorgegeven aan het include-bestand met behulp van een URL-queryreeks, zoals in HTTP GET. Strikt genomen is dit niet hetzelfde als het opnemen van een bestand en het de reikwijdte van de variabelen van het bovenliggende bestand laten overerven; het script draait immers op een externe server en het resultaat wordt vervolgens opgenomen in het lokale script.

Om ervoor te zorgen dat bestanden op afstand kunnen worden opgenomen, moet u dit in het configuratiebestand (php.ini) instellen allow_url_fopen=1.

Let op: PHP-versies voor Windows vóór PHP 4.3.0 ondersteunen niet de mogelijkheid om externe bestanden te gebruiken via deze functie, zelfs als de optie allow_url_fopen is ingeschakeld.


/* Hierbij wordt ervan uitgegaan dat www.example.com is geconfigureerd om.php te parseren
* bestanden, geen .txt-bestanden. Ook betekent "Werkt" hier dat de variabelen
* $foo en $bar zijn beschikbaar in het meegeleverde bestand. */

//Werkt niet omdat file.txt niet wordt verwerkt door www.example.com zoals PHP
vereisen "http://www.voorbeeld.com/bestand.txt?foo=1&bar=2";

// Zal niet werken omdat het zoekt naar het bestand "file.php?foo=1&bar=2" in de lokale
// bestandssysteem.
vereisen "file.php?foo=1&bar=2" ;

// Het volgende voorbeeld werkt:
vereisen "http://www.voorbeeld.com/bestand.php?foo=1&bar=2";

$foe = 1;
$balk = 2;
vereist "bestand.txt"; // Werkt
vereist "bestand.php"; // Werkt

?>



De constructie van vereist insluitsels

Ontwerp vereisen Hiermee kunt u bestanden opnemen in een PHP-script dat een PHP-script uitvoert. Algemene syntaxis vereisen zo een:

bestandsnaam vereisen;

Bij het starten (precies bij het opstarten, niet tijdens de uitvoering!) van het programma, zal de tolk de instructie eenvoudigweg vervangen door de inhoud van het bestand bestandsnaam (dit bestand kan ook een PHP-script bevatten, zoals gebruikelijk omlijst met tags En ?> ). Bovendien zal hij dit doen onmiddellijk voordat het programma wordt gestart (in tegenstelling tot wat hieronder wordt besproken). Dit kan erg handig zijn als u verschillende sjabloonpagina's met HTML-code in de scriptuitvoer wilt opnemen. Hier is een voorbeeld:

Header.html-bestand:

Het is een titel

Voettekst.html-bestand:
Thuisbedrijf, 2005.

Script.php-bestand
vereist "header.htm";
// Het script geeft de hoofdtekst van het document zelf weer
vereist "footer.htm";
?>

Het ontwerp dus vereisen Hiermee kunt u PHP-scripts samenstellen uit verschillende afzonderlijke bestanden, zoals html-pagina's en php-scripts.

Ontwerp vereisen ondersteunt de opname van externe bestanden (sinds PHP 4.3.0). Bijvoorbeeld:

// Het volgende voorbeeld werkt niet omdat er wordt geprobeerd een lokaal bestand op te nemen
vereisen "file.php?foo=1&bar=2" ;
// Het volgende voorbeeld werkt
vereisen ;
?>

! Ontwerp vereisen Hiermee kunt u externe bestanden opnemen als deze functie is ingeschakeld in het PHP-configuratiebestand. Gedetailleerde informatie.

Inclusief externe bestanden

Met PHP kunt u met URL-objecten werken, zoals met gewone bestanden. Packers, die standaard beschikbaar zijn, worden gebruikt om met externe bestanden te werken via het ftp- of http-protocol.

Als "fopen wrapper URL's" zijn opgenomen in PHP (zoals in de standaardconfiguratie), kunt u een bestand opgeven dat moet worden opgenomen met behulp van een URL (via HTTP) in plaats van een lokaal pad. Als de doelserver het doelbestand interpreteert als PHP-code, kunnen variabelen worden doorgegeven aan het include-bestand met behulp van een URL-queryreeks, zoals in HTTP GET. Strikt genomen is dit niet hetzelfde als het opnemen van een bestand en het de reikwijdte van de variabelen van het bovenliggende bestand laten overerven; het script draait immers op een externe server en het resultaat wordt vervolgens opgenomen in het lokale script.

Om ervoor te zorgen dat bestanden op afstand kunnen worden opgenomen, moet u dit in het configuratiebestand (php.ini) instellen allow_url_fopen=1.

Let op: PHP-versies voor Windows vóór PHP 4.3.0 ondersteunen niet de mogelijkheid om externe bestanden te gebruiken via deze functie, zelfs als de optie allow_url_fopen is ingeschakeld.


/* Hierbij wordt ervan uitgegaan dat www.example.com is geconfigureerd om.php te parseren
* bestanden, geen .txt-bestanden. Ook betekent "Werkt" hier dat de variabelen
* $foo en $bar zijn beschikbaar in het meegeleverde bestand. */

//Werkt niet omdat file.txt niet wordt verwerkt door www.example.com zoals PHP
erbij betrekken "http://www.voorbeeld.com/bestand.txt?foo=1&bar=2";

// Zal niet werken omdat het zoekt naar het bestand "file.php?foo=1&bar=2" in de lokale
// bestandssysteem.
neem "file.php?foo=1&bar=2" op;

// Het volgende voorbeeld werkt:
erbij betrekken "http://www.voorbeeld.com/bestand.php?foo=1&bar=2";

$foe = 1;
$balk = 2;
neem "bestand.txt" op; // Werkt
neem "bestand.php" op; // Werkt

?>