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, ihr lest mich in 1-2 Wochen wieder.
Happy Coding - Kanti