include vs require
Hallo Euch allen,
jeder Anfänger wird schnell feststellen, dass es mehrere Möglichkeiten gibt .php Dateien einzubinden. Heute stelle ich Euch die 4 meist genutzten Möglichkeiten vor.
include $file; include_once $file; require $file; require_once $file;
Was macht include?
Stellen Wir uns vor in der index.php Datei wird eine Funktion benötigt die sehr groß ist.
//funktion.php Datei
<?php
function sehrGroßeFunktion()
{
... //hunderte Zeilen Code
return $data;
}
Wir könnten den Code heraus kopieren und in die index.php Datei einfügen. Oder wir fügen das include Statement hinzu.
//index.php Datei
<?php
include "function.php";
$data = sehrGroßeFunktion();
echo "Hallo " . $data['user']['name'] . "\n"
. "wie geht es deiner Katze" $data['user']['katze'];
Die Funktionen in der Datei funktion.php können nun im weiteren Verlauf der index.php Datei genutzt werden.
Was macht include_once?
include_once steht für "einmalig einbeziehen". Während include die Datei mehrmals laden würde, wird die Datei bei include_once nur einmal geladen.
Hier ein kleines Beispiel:
//index2.php
<?php
include 'test.php';
include 'test.php';
//index3.php
<?php
include_once 'test.php';
include_once 'test.php';
//test.php
<?php
echo "Hallo Welt\n";
Beim Aufruf von index2.php erhalten Wir:
Hallo Welt
Hallo Welt
Beim Aufruf von index3.php erhalten Wir hingegen diese Ausgabe:
Hallo Welt
Was macht require(_once)?
Es bewirkt das gleiche wie include. Weshalb es dann existiert? Nun ja es macht nicht genau das gleich, zumindest nicht in einem Fehlerfall.
Während include(_once) eine Warning(E_WARNING) ausgibt, gibt require(_once) einen Error(E_COMPILE_ERROR) aus. FunFact: Ein Error beendet das Script schlagartig
Beispiel:
//index4.php
<b>-dies ist ein HTML dokument</b>
<?php
include 'datei';
?>
<b>-noch etwas text</b>
<?php
require 'datei';
?>
<b>-dieser Text wird nicht Angezeigt.</b>
Ergibt dies:
<b>-dies ist ein HTML dokument</b>
<b>Warning:</b> include(datei): failed to open stream: No such file or directory in ...
<b>Warning:</b> include(): Failed opening 'datei' for inclusion ...
<b>-noch etwas text</b>
<b>Warning:</b> require(datei): failed to open stream: No such file or directory in ...
<b>Fatal error:</b> require(): Failed opening required 'datei' ...
Wann soll ich jetzt was nutzten?
Grundsätzlich würde ich require_once empfehlen. Da die meisten Dateien sowieso nur einmal aber zwingend erforderlich sind.
Wenn eine Datei mehrmals eingebunden werden muss, kommt require zum Zuge.
Und include_once wenn die Datei nicht zwingend erforderlich ist, also eher sehr selten.
So dass wars erst mal zu include und require. Wenn ihr noch fragen habt, könnt ihr die unten Stellen, ansonsten lest ihr mich in 1-2 Wochen wieder.
Happy Coding - Kanti