include
Der Ausdruck include bindet die angegebene Datei ein und
wertet sie aus.
Die folgende Dokumentation trifft auch auf require zu.
Dateien werden unter dem angegebenen Pfad gesucht oder, wenn keiner
gegeben ist, im include_path. Wenn
die Datei auch im include_path nicht
gefunden werden kann, sucht include noch im Verzeichnis
der aufrufenden Datei und im aktuellen Arbeitsverzeichnis. Wenn keine Datei
gefunden wurde, erzeugt include einen Fehler der Stufe
E_WARNING; im Gegensatz dazu erzeugt
require in diesem Fall einen Fehler der Stufe
E_ERROR.
Beachten Sie, dass sowohl include als auch
require zusätzliche E_WARNINGs
auslösen, wenn nicht auf die Datei zugegriffen werden kann, bevor sie das
endgültige E_WARNING bzw. E_ERROR
auslösen.
Wenn ein Pfad angegeben ist — ob absolut (beginnend mit einem
Laufwerksbuchstaben oder \ auf Windows oder
/ auf Unix/Linux) oder relativ (beginnend mit
. oder ..), wird der
include_path ignoriert. Wenn der
Dateiname beispielsweise mit ../ beginnt, sucht der
Parser im übergeordneten Verzeichnis des aktuellen Arbeitsverzeichnisses
nach der Datei.
Mehr Informationen über den Umgang PHPs mit dem Einbinden von Dateien
im Zusammenhang mit dem Include-Pfad, siehe die Dokumentation zu
include_path.
Wenn eine Datei eingebunden wird, wird für den enthaltenen Code der
Geltungsbereich für Variablen
übernommen, der in der Zeile mit dem include-Befehl gilt. Alle Variablen,
die in dieser Zeile in der aufrufenden Datei verfügbar sind, stehen ab
diesem Zeitpunkt auch in der aufgerufenen Datei zur Verfügung. Hingegen
haben alle Funktionen und Klassen, die in der eingebundenen Datei definiert
sind, den globalen Geltungsbereich.
Grundlegendes include-Beispiel
test.php
]]>
Wenn include innerhalb einer Funktion aufgerufen wird, verhält sich der
gesamte Code aus der aufgerufenen Datei wie wenn er in der Funktion stünde.
Folglich hat er denselben Variablen-Gültigkeitsbereich wie diese Funktion.
Eine Ausnahme von dieser Regel sind
magische Konstanten,
die geparst werden, bevor die Einbindung durchgeführt wird.
Include in Funktionen
]]>
Wenn eine Datei eingebunden wird, wechselt der Parser am Anfang der
eingebundenen Datei in den HTML-Modus und am Ende wieder in den PHP-Modus.
Aus diesem Grund muss jeder PHP-Code in der eingebundenen Datei mit
gültigen PHP-Start- und -Endtags
umschlossen sein.
Wenn "include-URL-Wrapper"
aktiviert sind (was sie in der Standard-Konfiguration sind), kann die
einzubindende Datei mit einer URL (über HTTP oder ein anderes unterstütztes
Protokoll - siehe für eine Liste unterstützter
Protokolle) anstatt eines lokalen Pfades eingebunden werden. Wenn der
Zielserver die Zieldatei als PHP-Code interpretiert, können Variablen
an die einzubindende Datei mithilfe von HTTP-GET-Query-Strings übergeben
werden, obwohl dies nicht dasselbe ist, wie wenn man die Datei einbindet
und sie den Variablenbereich übernimmt; das Skript läuft weiterhin auf dem
entfernten Server und das Ergebnis wird in das lokale Skript eingebunden.
include über HTTP
]]>
Sicherheits-Warnung
Die entfernte Datei mag vom entfernten Server (je nach Konfiguration)
geparst werden oder nicht, aber sie muss weiterhin ein gültiges PHP-Skript
ausgeben, weil die Ausgabe auf dem lokalen Server als PHP ausgeführt wird.
Wenn die Datei vom entfernten Server dort verarbeitet und lokal nur
ausgegeben werden soll, ist readfile die bessere Wahl.
Andernfalls muss sehr gut darauf Acht gegeben werden, sicherzustellen, dass
das entfernte Skript gültigen und erwünschten Code ausgibt!
Siehe auch Entfernte Dateien,
fopen und file für verwandte
Informationen.
Umgang mit Rückgabewerten: include gibt im Fehlerfall
FALSE zurück und und generiert eine Warnung.
Erfolgreiches Einbinden, außer überschrieben durch die eingebundene Datei,
gibt 1 zurück. Es ist möglich, in der eingebundenen Datei
return aufzurufen um den Ablauf dieser Datei
abzubrechen und zu dem einbindenden Skript zurückzukehren. Der
zurückgegebene Wert kann als Rückgabewert des include-Aufrufs abgefragt
werden, wie bei einer normalen Funktion. Dies ist beim Einbinden
entfernter Dateien nur möglich, wenn die entfernte Datei mit
gültigen PHP Start- und Endtags
umschlossen ist (wie bei jeder lokalen Datei). Die benötigten Variablen
können innerhalb dieser Tags deklariert werden und sie werden an dem Punkt,
an dem die Datei eingebunden wird, verfügbar.
Weil include eine spezielles Sprachkonstrukt ist,
sind die Klammern um das Argument optional. Beim Vergleichen des
Rückgabewerts muss allerdings aufgepasst werden (siehe Beispiel).
Vergleichen des Rückgabewerts von include
]]>
include und return
noreturn.php
testreturns.php
]]>
$bar hat den Wert 1, weil das Einbinden
erfolgreich war. Man beachte den Unterschied zwischen den obigen Beispielen:
Die erste Datei nutzt return, was die andere nicht tut.
Wenn das Einbinden fehlschlägt, wird &false; zurückgegeben und ein Fehler der
Kategorie E_WARNING erzeugt.
Wenn in der eingebundenen Datei Funktionen definiert werden, können sie in
der einbindenden Datei genutzt werden, unabhängig davon, ob sie vor oder
nach return definiert werden. Wenn eine Datei zweimal
eingebunden wird, erzeugt PHP einen fatalen Fehler, weil Funktionen bereits
definiert wurden. Es wird empfohlen, include_once zu
nutzen, anstatt zu überprüfen, ob die Datei bereits eingebunden wurde, und
abhängig davon innerhalb der eingebundenen Datei zu handeln.
Ein anderer Weg, die Ausgabe eines eingebundenen Skriptes in eine Variable
zu schreiben, ist, include mit den
Funktionen zur Steuerung des Ausgabepuffers
zu verwenden. Beispiel:
Nutzung des Ausgabepuffers um eine Datei in einen String aufzunehmen
]]>
Um automatisch Dateien in Skripte einzubinden, siehe auch die
Konfigurationsdirektiven
auto_prepend_file und
auto_append_file in der
&php.ini;.
¬e.language-construct;
Siehe auch require, require_once,
include_once, get_included_files,
readfile, virtual, und
include_path.