studyklar
IProg · Skript 5 · Abschnitt 3

Gültigkeit von Variablen in PHP: global und static

Wo eine Variable gilt, regelt PHP anders als JavaScript: Eine Funktion sieht die Variablen außerhalb nicht von selbst. Hier steht, warum das so ist und wie global und static das ändern. Rechts laufen die Beispiele mit ihrer echten Ausgabe. Mit Weiter geht es Schritt für Schritt voran.

Worum es geht

Skript 05, Folie 12: Gültigkeit von Variablen, global und static.

Der Gültigkeitsbereich einer Variablen ist der Teil des Programms, in dem man sie mit ihrem Namen erreicht. Die Frage: Welche Variablen sieht eine Funktion in PHP, und wie lange lebt eine Variable in einer Funktion?

Merke: Jede Funktion in PHP hat ihren eigenen Bereich. Was außerhalb steht, muss sie sich ausdrücklich holen.

So gehen wir vor:

  1. Eine Funktion versucht, eine Variable von außen auszugeben.
  2. Warum das scheitert.
  3. global: die Variable von außen holen, lesen und ändern.
  4. static: eine Variable, die zwischen Aufrufen ihren Wert behält.
  5. Was für if- und for-Blöcke gilt.
  6. Eine Klausurfrage dazu.

Die Funktion sieht $text nicht

<?phpfunction ausgabe() {  echo($text);}$text = "Hello World";ausgabe(); // Leere Ausgabe!
Warning: Undefined variable $text in …/lokal.php on line 3

Zeile 5 legt $text außerhalb jeder Funktion an. Zeile 6 ruft ausgabe() auf, und die Funktion will in Zeile 3 $text ausgeben.

Erwartet hätte man „Hello World“. Folie 12 sagt: leere Ausgabe. Das stimmt, es erscheint kein Text. Heutiges PHP (ab Version 8) meldet dazu eine Warning: „Undefined variable $text“, die Variable ist in Zeile 3 unbekannt.

Warum: eigener Bereich je Funktion

BereichVariablen
global (außerhalb)$text = "Hello World"
in ausgabe()keine; $text ist dort unbekannt

Eine Variable, die außerhalb jeder Funktion entsteht, heißt global. Eine Variable in einer Funktion heißt lokal: Es gibt sie nur in dieser Funktion, und nur während sie läuft.

In PHP sieht eine Funktion nur ihre lokalen Variablen und ihre Parameter. Das $text in Zeile 3 ist darum eine neue, lokale Variable ohne Wert. Mit dem globalen $text hat sie nur den Namen gemeinsam.

In JavaScript ist es anders: Dort sieht eine Funktion die globalen Variablen von selbst. Genau diesen Unterschied fragt Klausur 3, Aufgabe 7 ab (siehe Klausurfrage am Schluss).

Aus Skript 02, Folie 23: In JavaScript sind mit var außerhalb einer Funktion angelegte Variablen global. Die Funktion demo der Folie liest a1 und a2 ohne weiteres Schlüsselwort.
Noch 8 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1Lokal und global

was eine Funktion sieht

<?phpfunction ausgabe() {  echo($text);}$text = "Hello World";ausgabe(); // Leere Ausgabe!
LegendeZeilen des SchrittsDas Beispiel von Folie 12: eine Funktion will eine Variable von außen ausgeben.