Geltungsbereich von Variablen
Der
Geltungsbereich
einer
Variablen
ergibt
sich
aus
dem
Zusammenhang
,
in
dem
sie
definiert
wurde
.
Meistens
besteht
dieser
aus
einem
einzigen
Bereich
.
Dieser
beinhaltet
auch
den
Bereich
für
Dateien
,
die
per
"
include"
-
oder
"require
"-Anweisung
eingebunden
wurden
,
z.B.
:
Die
Variable
$a
ist
auch
in
der
eingebundenen
Datei
b.inc
verfügbar
.
In
benutzerdefinierten
Funktionen
wird
ein
auf
die
Funktion
beschränkter
Geltungsbereich
eingeführt
.
Jede
in
einer
Funktion
benutzte
Variable
ist
zunächst
auf
den
lokalen
Bereich
der
Funktion
beschränkt
,
z.B.
:
Dieses
Skript
erzeugt
keine
Bildschirm-Ausgabe
,
da
sich
die
Echo
-
Anweisung
auf
eine
lokale
Variable
namens
$a
bezieht
und
dieser
kein
Wert
im
lokalen
Bezug
zugewiesen
worden
ist
.
Dies
ist
ein
kleiner
Unterschied
zu
C
,
wo
globale
Variablen
auch
in
Funktionen
vorhanden
sind
,
es
sei
denn
,
sie
werden
durch
eine
funktionsinterne
Definition
überschrieben
.
Das
kann
zu
Problemen
führen
,
denn
in
PHP
müssen
global
geltende
Variablen
innerhalb
von
Funktionen
als
solche
definiert
werden
.
Ein
Beispiel
:
Das
obige
Skript
gibt
"
3
"
aus
.
Durch
das
Deklararieren
der
Variablen
$a
und
$b
innerhalb
der
Funktion
als
global
,
weisen
alle
Referenzen
zu
beiden
Variablen
auf
die
nun
globalen
Werte
.
Es
gibt
keine
Beschränkungen
bei
der
Anzahl
an
globalen
Variablen
,
die
durch
eine
Funktion
verändert
werden
können
.
Eine
weitere
Möglichkeit
besteht
in
der
Verwendung
des
speziellen
$GLOBALS
PHP-Array
.
Das
obige
Beispiel
kann
damit
auch
so
geschrieben
werden
:
Das
$GLOBALS
-Array
ist
ein
assoziatives
Array
mit
dem
Bezeichner
der
globalen
Variablen
als
Schlüssel
und
dem
Inhalt
dieser
Variablen
als
Wert
des
Array-Elements
.
Ein
weiterer
wichtiger
Anwendungszweck
von
Variablen-Bereichen
ist
die
static
-Variable
.
Eine
statische
Variable
existiert
nur
in
einem
lokalen
Funktions-Bereich
,
der
Wert
geht
beim
Verlassen
dieses
Bereichs
aber
nicht
verloren
.
Schauen
sie
das
folgende
Beispiel
an
:
Diese
Funktion
ist
sinnlos
,
da
sie
bei
jedem
Aufruf
$a
auf
0
setzt
und
"
0
"
ausgibt
.
Die
Anweisung
$a++
,
welche
den
Wert
erhöht
,
macht
keinen
Sinn
,
da
der
Wert
von
$a
beim
Verlassen
der
Funktion
verloren
geht
.
Um
eine
sinnvolle
Zählfunktion
zu
implementieren
,
die
ihren
aktuell
gesetzten
Wert
nicht
vergisst
,
müssen
sie
die
Variable
$a
als
"
static
"
deklarieren
:
Jetzt
wird
bei
jedem
Aufruf
der
test(
)-Funktion
der
aktuelle
Wert
von
$a
ausgegeben
und
dann
um
1
erhöht
.
Static-Variablen
ermöglichen
auch
einen
Weg
zum
Umgang
mit
rekursiven
Funktionen
.
Das
sind
Funktionen
,
die
sich
selbst
aufrufen
.
Hierbei
besteht
die
Gefahr
,
so
genannte
Endlos
-
Schleifen
zu
programmieren
.
Sie
müssen
also
einen
Weg
vorsehen
,
diese
Rekursion
zu
beenden
.
Die
folgende
einfache
Funktion
zählt
rekursiv
bis
10
.
Die
statische
Variable
$count
wird
benutzt
,
um
die
Rekursion
zu
beenden
: