4.4.5 Einbetten von Programmteilen

Zum Einbinden von PHP-Teilen verwendet man include oder require. Hiermit wird genau an der Stelle im PHP-Code der Inhalt einer externen Datei eingebunden. Stehen include oder require innerhalb einer Funktion, so gilt der gesamte eingebundene Code auch nur im Inneren dieser Funktion.

Welche Daten werden typischerweise in externe Dateien ausgelagert?

  • Konfiguraiontsdateien
  • Klassen (gut erkennbar daran, dass die Klassennamen mit einem Großbuchstaben anfangen)
  • Dateien, die HTML-Syntax z.B. für Header oder Footer enthalten

Alle einzubindenden Dateien sollte PHP-Sourcecode enthalten und als Dateityp .php bekommen.

Die Tabelle unten bietet eine Übersicht über die Funktionen und deren Erklärung:

Funktion Erklärung
include Liest eine Datei ein und wertet diese aus. Es wird eine Warnung ausgegeben, wenn die Datei nicht eingelesen werden kann.
require Liest eine Datei ein. Das Programm wird abgebrochen, wenn die Datei nicht eingelesen werden kann (Fatal Error).
include_once bzw. require_once Einmal eingebundener Code wird nicht nochmals eingebunden.

Anstelle von include 'pfad/dateiname.php' können auch Klammern include('pfad/dateiname.php') verwendet werden. Dies ist jedoch eine ältere Schreibweise und kommt aus einer Zeit, in der include, require sowie include_once und require_once als PHP-Funktionen betrachtet wurden.

Typischerweise verwendet man require_once zum Einbinden von Klassen und include für Programmteile, die nicht unbedingt im Programmablauf benötigt werden. Wenn man sich unsicher ist, welchen der vier Befehle zum Einbinden man nutzen sollte, dann ist require_once zu empfehlen.

require_once './conf/config.php';
require_once './class/HtmlInput.php';

Profitipp: Systemunabhängig funktioniert nachfolgende Syntax, welche die Nutzung von DIRECTORY_SEPARATOR beinhaltet, um den korrekten Pfadtrenner für das Betriebssystem zu verwenden.

1
2
3
4
$incPath   = __DIR__.DIRECTORY_SEPARATOR.'conf'.DIRECTORY_SEPARATOR;
$classPath = __DIR__.DIRECTORY_SEPARATOR.'class'.DIRECTORY_SEPARATOR;
require_once $incPath.'config.php';
require_once $classPath.'HtmlInput.php';