Globale Variablen

Lesen und Schreiben von globalen Variablen in PHP

1. Erläuterungen

Variablen haben gewöhnlich einen Geltungsbereich (Scope), sodass in einer Funktion definierte Variablen für andere Funktionen nicht verfügbar sind. Es ist aber auch möglich, Variablen in einem globalen Geltungsbereich zu platzieren, wodurch sie von überall abgerufen werden können. Der Zugriff auf diese erfolgt dann über das Schlüsselwort „global” oder das $GLOBALS-Array.

2. Beispiel: Globale Variable definieren

Nachfolgend werden zwei globale Variablen definiert. Von einer Funktion aus soll auf diese zugegriffen werden. Dafür muss „global” oder $GLOBALS verwendet werden.

PHP-Code
<?php
    error_reporting(E_ALL);

	// Diese beiden Variablen sind automatisch globale Variablen, da sie im obersten
	// Geltungsbereich (ausserhalb aller Funktionen) definiert werden
	$beispiel1 = 'Das ist eine globale Variable';
	$beispiel2 = 'Das ist auch eine globale Variable';


	function test() {
		global $beispiel1; // für den Rest dieser Funktion kann direkt auf $beispiel1 zugegriffen werden
		echo($beispiel1 . "\n");
		echo($GLOBALS['beispiel2'] . "\n"); // nur einmaliger Zugriff auf globale Variable $beispiel2 
		echo($beispiel2 . "\n"); // jetzt ist $beispiel2 schon nicht mehr bekannt, es entsteht ein Fehler
	}
	
	test();
?>

HTML-Code: Ausgabe
Das ist eine globale Variable
Das ist auch eine globale Variable
<br />
<b>Notice</b>:  Undefined variable: beispiel2 in <b>...\test.php</b> on line <b>11</b><br />



3. Beispiel: Mehrere Variablen als global kennzeichnen

Das Schlüsselwort „global” kann auch auf mehrere Variablen gleichzeitig angewendet werden.

PHP-Code
<?php
	error_reporting(E_ALL);

	$glob1 = 'globale Variable 1';
	$glob2 = 'globale Variable 2';
	$glob3 = 'globale Variable 3';

	function test() {
		global $glob1, $glob2, $glob3;
		echo $glob1, ", ", $glob2, ", ", $glob3;
	}
	
	test();
?>

HTML-Code: Ausgabe
globale Variable 1, globale Variable 2, globale Variable 3

4. Beispiel: In globale Variablen schreiben

In globale Variablen kann von überall aus geschrieben werden. Die Änderungen sind dann ebenfalls global verfügbar.

PHP-Code
<?php
	error_reporting(E_ALL);

	$glob1 = 'globale Variable 1';
	$glob2 = 'globale Variable 2';

	function test1() {
		global $glob1;
		$glob1 = 'test1';
		$GLOBALS['glob2'] = 'test2';
		echo "test1(): ", $glob1, ", ", $GLOBALS['glob2'], "\n";
	}
	
	function test2() {
		global $glob1, $glob2;
		echo "test2(): ", $glob1, ", ", $glob2;
	}
	
	test1();
	test2();
?>

HTML-Code: Ausgabe
test1(): test1, test2
test2(): test1, test2

5. Beispiel: Klasse statt globaler Variablen

Statt globaler Variablen sollten Klassen verwendet werden, wodurch die Lesbarkeit und Wartbarkeit des Codes verbessert wird.

PHP-Code
<?php
	class Config {
		public static function getGlobal1() {
			return 'global1';
		}

		public static function getGlobal2() {
			return 'global2';
		}		
	}

	
	function test() {
		echo(Config::getGlobal1() . "\n");
		echo(Config::getGlobal2() . "\n");
	}

	test();
?>

HTML-Code: Ausgabe
global1
global2



Deprecated: Directive 'allow_url_include' is deprecated in Unknown on line 0