Programmeren in PHP/Includes
Includes zijn bedoeld om in een php-bestand een ander bestand (hoeft geen php te zijn) aan te roepen. Er zijn verschillende soorten includes:
- include
- require
- include_once
- require_once
include
[bewerken]Een standaard include ziet er zo uit
PHP-code: include
<?php
include 'bestand.php';
echo 'We hebben nu bestand.php geinclude<br />';
echo 'We gaan het bestand nog een keer includen maar dan zetten we haakjes erom:<br />';
include ('bestand.php');
echo 'Zoals je ziet heeft dat hetzelfde resultaat!';
?>
Hier wordt de code in het bestand bestand.php uitgevoerd. vervolgens verschijnen 2 regels tekst op het scherm, daarna wordt het bestand nog een keer geinclude, het enige verschil is de haakjes om de bestandsnaam. Dat heeft gewoon hetzelfde effect
require
[bewerken]De functie require is bijna hetzelfde als de functie include:
PHP-code: require
<?php
require 'bestand.php';
echo 'We hebben nu bestand.php geinclude<br />';
?>
Dit zal hetzelfde effect hebben als bij de functie include, tenminste als bestand.php ook echt bestaat. Wanneer het niet bestaat zal de code eronder ook NIET worden uitgevoerd, dat gebeurt dus wel bij include. Require betekent dan ook vereisen. Als het bestand niet bestaat stopt het hele script en wordt er een fatal error getoond.
_once
[bewerken]Er bestaat ook include_once en require_once. Dit houdt in dat een bestand maar 1× geinclude wordt. Dit is vooral handig in het objectgeoriënteerd programmeren omdat er dan, wanneer een bestand vaker aangeroepen wordt, een waarschuwing wordt getoond vanwege overlappende functienamen. Een voorbeeld: Er zijn 3 pagina's:
- pagina1.php
PHP-code: pagina1.php
<?php
echo 'Hoi, dit is pagina1.php';
?>
- pagina2.php:
PHP-code: pagina2.php
<?php
include("pagina1.php");
echo 'Hoi, dit is pagina 2';
?>
- pagina3.php
PHP-code: pagina3.php
<?php
include ('pagina1.php');
include ('pagina2.php');
echo 'Dit is pagina3.php hierin zijn pagina1 en pagina2 geinclude';
?>
Wat hier gebeurt is dat in pagina 3 zowel pagina1.php als pagina2.php aangeroepen worden, maar in pagina2.php wordt ook pagina1.php aangeroepen. Dus wordt pagina1.php 2× aangeroepen
include VS require
[bewerken]Om duidelijk te maken wat er gebeurt bij het includen of requiren van een niet bestaande pagina hieronder een voorbeeld:
PHP-code:
<?php
include("nietbestaandepagina.php");
echo 'Deze tekst wordt wel weergeven.<br />';
echo 'En dit ook.<br />';
require("nietbestaandepagina.php");
echo 'Deze tekst wordt dus niet weergeven';
echo 'En dit natuurlijk ook niet';
?>
Dit geeft het volgende:
Warning: include(nietbestaandepagina.php) [function.include]: failed to open stream: No such file or directory in /map/voorbeeld.phpp on line 2 Warning: include(nietbestaandepagina.php) [function.include]: failed to open stream: No such file or directory in /map/voorbeeld.php on line 2 Warning: include() [function.include]: Failed opening 'nietbestaandepagina.php' for inclusion (include_path='.:/usr/local/lib/php') in /map/voorbeeld.php on line 2 Deze tekst wordt wel weergeven. En dit ook. Warning: require(nietbestaandepagina.php) [function.require]: failed to open stream: No such file or directory in /map/voorbeeld.php on line 5 Warning: require(nietbestaandepagina.php) [function.require]: failed to open stream: No such file or directory in /map/voorbeeld.php on line 5 Fatal error: require() [function.require]: Failed opening required 'nietbestaandepagina.php' (include_path='.:/usr/local/lib/php') in /map/voorbeeld.php on line 5
Er verschijnen een paar warnings, met de mededeling dat het bestand nietbestaandepagina.php niet gevonden is. Eronder staan de 2 zinnen: Deze tekst wordt wel weergeven. En dit ook.. Daaronder nog 2 warnings, en een fatal error. De laatste 2 regels Deze tekst wordt dus niet weergeven. En dit natuurlijk ook niet worden dus NIET weergeven, want het bestand bestaat niet en dus wordt het script niet verder uitgevoerd.