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