Die
include(
)
-Anweisung
bindet
die
angegebene
Datei
ein
und
wertet
sie
aus
.
Die
untenstehende
Dokumentation
gilt
ebenso
für
require(
)
.
Diese
beiden
Konstrukte
sind
in
jeder
Hinsicht
gleichwertig
mit
der
einen
Ausnahme
:
der
Umgang
mit
Fehlern
.
include(
)
erzeugt
ein
Warning
während
require(
)
in
einem
Fatal
Error
Diese
beiden
Konstrukte
sind
in
jeder
Hinsicht
gleichwertig
mit
der
einen
Ausnahme
:
der
Umgang
mit
Fehlern
.
include(
)
erzeugt
ein
Warning
während
require(
)
in
einem
Fatal
Error
endet
.
Mit
anderen
Worten
,
verwenden
Sie
require(
)
,
wenn
Sie
möchten
,
dass
eine
fehlende
Datei
die
Ausführung
ihres
Skripts
beendet
.
include(
)
verhält
sich
anders
,
ihr
Skript
wird
weiterhin
ausgeführt
.
Stellen
Sie
außerdem
sicher
,
dass
Sie
einen
gültigen
include_path
gesetzt
haben
.
Wenn
eine
Datei
eingebunden
wird
,
erbt
der
enthaltene
Code
den
Geltungsbereich
von
Variablen
der
Zeile
in
der
die
Anweisung
steht
.
Ab
dieser
Zeile
stehen
alle
verfügbaren
Variablen
in
der
aufgerufenen
Datei
im
aufrufenden
Skript
zur
Verfügung
.
Beispiel
12-3
.
Grundlegende
include(
)
Beispiel
vars.php
?php
$color
=
'
green'
;
$fruit
=
'appel'
;
?
test.php
?php
echo
"A
$color
$fruit"
;
/
/
A
include
'vars.php'
;
echo
"A
$color
$fruit"
;
/
/
A
green
apple
?
|
|
Steht
include
im
aufrufenden
Skript
innerhalb
einer
Funktion
,
verhält
sich
der
gesamte
Code
der
aufgerufenen
Datei
genau
so
,
als
ob
Sie
diesen
Code
innerhalb
dieser
Funktion
definiert
hätten
.
Aus
diesem
Grund
hat
dieser
Code
den
Geltungsbereich
der
Variablen
dieser
Funktion
.
Beispiel
12-4
.
Include
innerhalb
einer
Funktion
?php
function
foo(
)
{
global
$color
;
include
'vars.php'
;
echo
"A
$color
$fruit"
;
}
/
*
vars.php
ist
im
Geltungsbereich
von
foo()
,
*
*
d.h
.
$fruit
steht
außerhalb
dieses
Bereichs
*
*
NICHT
zur
Verfügung
.
$color
schon
,
da
wir
*
*
diese
Variable
als
global
definiert
haben
*
/
foo()
;
/
/
A
green
apple
echo
"A
$color
$fruit"
;
/
/
A
green
?
|
|
Beim
Einbinden
einer
Datei
wechselt
der
Parser
vom
PHP-Modus
zu
Beginn
der
Zieldatei
in
den
HTML-Modus
und
kehrt
am
Ende
der
eingebunden
Datei
wieder
in
den
PHP-Modus
zurück
.
Deshalb
muss
jeglicher
Code
innerhalb
der
eingebundenen
Datei
,
der
als
PHP-Code
ausgeführt
werden
soll
,
von
gültigen
PHP-Start
-
und
Ende-Tags
eingefaßt
sein
.
Wenn
"
URL
fopen
wrappers
"
in
PHP
aktiviert
sind
(in
der
Standardkonfiguration
ist
das
der
Fall
)
können
Sie
als
Pfad
der
einzubindenden
Datei
auch
eine
URL
(via
HTTP
oder
anderen
unterstützen
Wrappern
-
eine
Liste
der
unterstützen
Protokolle
finden
Sie
unter
Anhang
I
)
statt
einer
lokalen
Pfadangabe
angeben
.
Falls
der
Zielserver
die
Zieldatei
als
PHP-Code
interpretiert
,
können
Sie
an
die
einzubindende
Datei
Variablen
in
einem
Request-String
übergeben
,
genauso
wie
bei
HTTP
GET
.
Streng
genommen
ist
das
nicht
das
Gleiche
,
wie
diese
Datei
einzubinden
und
diesem
den
Geltungsbereich
des
Vater-Skripts
zu
vererben
;
das
Skript
wird
auf
dem
Remote-Server
ausgeführt
und
danach
wird
das
Ergebnis
in
das
lokale
Skript
eingebunden
.
Warnung
|
Windows
PHP
Versionen
,
kleiner
als
PHP
4.3
,
erlauben
den
Zugriff
auf
Remote-Dateien
mit
dieser
Funktion
nicht
,
selbst
wenn
allow_url_fopen
aktiviert
ist
.
|
Beispiel
12-5
.
include(
)
über
HTTP
?php
/
*
Dieses
Beispiel
geht
davon
aus
,
dass
www.example.com
so
konfiguriert
*
*
ist
,
dass
.php-Dateien
geparst
werden
und
keine
.txt
Dateien
.
Also
meint
*
*
'
Funkt
'
hier
,
dass
die
Variablen
$foo
und
$bar
innerhalb
der
*
*
angeforderten
Datei
zur
Verfügung
stehen
*
/
/
/
Funkt
.
nicht
;
file.txt
wird
von
www.example.com
nicht
als
PHP
geparst
include
'http
:
/
/www.example.com
/
file.txt?foo=1
bar=2'
;
/
/
Funkt
.
nicht
;
schaut
nach
einer
lokalen
Datei
namens
/
/
'file.php?foo=1
bar=2
'
im
lokalen
Dateisystem
include
'file.php?foo=1
bar=2'
;
/
/
Funkt
include
'http
:
/
/www.example.com
/
file.php?foo=1
bar=2'
;
$foo
=
1
;
$bar
=
2
;
include
'file.txt'
;
/
/
Funkt
.
include
'file.php'
;
/
/
Funkt
.
?
|
|
Siehe auch
Zugriff auf entfernte
Dateien
,
fopen()
und
file()
für verwandte Informationen
Da
include(
)
und
require(
)
spezielle
Sprachkonstrukte
sind
,
müssen
Sie
diese
innerhalb
einer
bedingten
Anweisung
in
einen
Anweisungsblock
setzen
.
Beispiel
12-6
.
include(
)
und
bedingte
Blöcke
?php
/
/
Das
ist
FALSCH
und
führt
nicht
zum
gewünschten
Ergebnis
.
if
(
$bedingung
)
include
$datei
;
else
include
$andere_datei
;
/
/
Das
ist
KORREKT
.
if
($bedingung
)
{
include
$datei
;
}
else
{
include
$andere_datei
;
}
?
|
|
Der
Umgang
mit
Returns
:
Es
ist
möglich
eine
return(
)
Es
ist
möglich
eine
return(
)
-Anweisung
innerhalb
einer
eingebunden
Datei
anzugeben
,
um
die
Ausführung
innerhalb
dieser
Datei
abzubrechen
und
zum
aufrufenden
Skript
zurück
zu
kehren
.
Ebenso
ist
die
Rückgabe
von
Werten
aus
einer
eingebunden
Datei
möglich
.
Sie
können
den
Wert
eines
include-Aufrufs
auf
die
gleiche
Art
und
Weise
nutzen
,
wie
Sie
es
bei
einer
Funktion
machen
würden
.
Anmerkung
:
In
PHP
3
darf
eine
return-Anweisung
nicht
innerhalb
eines
Blocks
auftreten
,
es
sei
denn
,
es
ist
ein
Funktions-Block
.
In
diesem
Fall
gilt
return(
)
für
diese
Funktion
und
nicht
für
die
ganze
Datei
.
Beispiel
12-7
.
include(
)
und
die
return(
)
Anweisung
return.php
?php
$var
=
'
PHP'
;
return
$var
;
?
noreturn.php
?php
$var
=
'PHP'
;
?
testreturns.php
?php
$foo
=
include
'return.php'
;
echo
$foo
;
/
/
gibt
'PHP
'
aus
$bar
=
include
'noreturn.php'
;
echo
$bar
;
/
/
gibt
1
aus
?
|
|
$bar
hat
den
Wert
1
,
weil
include
erfolgreich
war
.
Beachten
Sie
die
Unterschiede
in
den
obigen
Beispielen
.
Das
erste
nutzt
return(
)
innerhalb
der
eingebundenen
Datei
im
Gensatzt
zum
zweiten
Beispiel
.
Weitere
Möglichkeiten
Dateien
in
Variablen
"
einzubinden
"
bieten
ihnen
die
Funktionen
fopen(
)
und
file(
)
oder
include(
)
im
Zusammenspiel
mit
den
Funktionen
zur
Ausgabesteuerung
.
Siehe
auch
require(
)
,
require_once(
)
,
include_once(
)
,
readfile(
)
,
virtual(
)
und
include_path
.