Websiteentwicklung: PHP: Include
include(), require(), include_once(), require_once()
[Bearbeiten]include()
[Bearbeiten]Mittels include() kann man Inhalte anderer Dateien an der Stelle einfügen, an der der Befehl steht.
<?php
... // PHP-Code
include 'header.inc.php'; // wird "header.inc.php" nicht gefunden, wird ein "Warning" ausgegeben
... // weiterer PHP-Code
?>
Dieser Befehl fügt den Inhalt der Datei header.inc.php an der Stelle im Skript ein, an der sich der include-Befehl befindet. Und zwar genau dann, wenn der PHP-Parser diese Stelle im Script erreicht.
Den include-Befehl verwendet man zum Beispiel, um Funktionen in jedem Skript verfügbar zu machen. Anstatt in jeder Datei die Funktionen zu definieren, speichert man diese in einer eigenen Datei, die dann von jedem Skript eingebunden wird. Sinn davon ist, dass man bei Änderungen einer Funktion diese nur einmal auszubessern braucht.
Es gibt aber noch viele andere Einsatzgebiete, wo der include-Befehl Sinn macht: Und zwar beim Einbinden von Seitenelementen; z.B. ein Navigationsmenü oder ein Footer.
require()
[Bearbeiten]Um sicherzustellen, dass eine Datei eingebunden wird, die z.B. wichtige Konfigurationswerte beinhaltet, welche vor Ausführung anderen Codes zur Verfügung stehen müssen, ist der Befehl require() zu verwenden.
Wird die einzubindende Datei nicht gefunden, erzeugt require() einen "Fatal error" und das Script wird abgebrochen. Im Unterschied dazu erzeugt include() nur ein "Warning" und das Script wird weiter ausgeführt.
<?php
... // einiger PHP-Code
require 'config.inc.php'; // wird "config.inc.php" nicht gefunden, wird ein "Fatal error" ausgegeben
... // weiterer PHP-Code
?>
Innerhalb einer eingebundenen Datei können natürlich weitere include() / require() Befehle enthalten sein.
include_once() und require_once()
[Bearbeiten]Das mehrfache Definieren einer Funktion ist verboten. Um sicherzustellen, dass eine solche Datei nicht mehrfach eingebunden wird, gibt es die Befehle include_once() und require_once(). Der Parser sorgt dann dafür, dass dies nicht geschieht. Ansonsten verhalten sich diese beiden Varianten wie Ihre Äquivalente require() und include().
<?php
... // einiger PHP-Code
require_once 'config.inc.php';
... // weiterer PHP-Code
require_once 'config.inc.php'; // wird vom PHP-Parser ignoriert,
// da die Datei bereits eingebunden wurde
... // noch mehr PHP-Code
include_once 'header.inc.php';
... // noch viel mehr PHP-Code
include_once 'header.inc.php'; // wird vom PHP-Parser ignoriert,
// da die Datei bereits eingebunden wurde
?>
Achtung: Wenn require_once() auf einem System eingesetzt wird, das nicht zwischen Groß- und Kleinschreibung auf dem Dateisystem unterscheidet (bspw. Windows Server auf FAT), kann ein und dieselbe Datei unter Umständen mehrfach eingebunden werden, wenn sich die Schreibweise im PHP-Skript zwischen den Aufrufen unterscheidet.
<?php
... // einiger PHP-Code
require_once 'my_api.inc.php';
... // weiterer PHP-Code
require_once 'My_Api.inc.php'; // wird vom PHP-Parser NICHT ignoriert, da
// anderer Dateiname. Unter Umständen wird
// dieselbe Datei hier mehrfach eingebunden.
?>
Zusätzliche Informationen im PHP-Manual