Kanti's Blog

Der "PHP Freak"

include vs require

- Posted in PHP by

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