Hallo Florian,
Erstens: eine Variablendeklaration gibt es in PHP nicht...
Zu deinen Beispielen...
Es gibt folgende Möglichkeiten Globale Variablen zu deklarieren:
PHP-Code:
global $bla = 'xyz';
$GLOBALS['blabla'] = 'abc';
Mit dem Schlüsselwort global kann man sich auch Variablen aus dem obersten Namensraum des Skripts in deine Funktionen importieren... mit $GLOBALS[] funktioniert das nicht.
Beispiel:
PHP-Code:
$bla = 'abc';
function a() {
global $bla;
echo $bla; // Ausgabe: abc
}
function b() {
echo $GLOBALS['bla'] // Funktioniert nicht...
}
Beispiel 2:
Das Schlüsselwort global registriert die Variable automatisch in $GLOBALS;
PHP-Code:
global $bla = 'abc';
function b() {
echo $GLOBALS['bla'] //Ausgabe: abc
}
Beispiel 3:
Mit global kann man keine Variablen aus dem Namensraum einer Funktion verfügbar machen:
PHP-Code:
function a() {
$bla = 'abc';
}
a();
global $bla;
echo $bla; // keine Ausgabe
Es gibt noch ein paar weitere Beispiele... aber da kannst du selbst noch ein wenig rumprobieren... generell gilt: das Arbeiten mit dem Schlüsselwort global ist etwas verwirrend - ich verwende deshalb grundsätzlich nur noch das $GLOBALS Array - da kann ich mir sicher sein, dass das was ich reingeschrieben habe auch überall (inklusive der Includes) gelesen werden kann.
Bei der Objektorientierten Programmierung mit PHP5 verwende ich übrigens meistens statische Klassenvariablen statt Globale Variablen - reine Geschmackssache...
PHP-Code:
class container {
{
public static $bla;
public static function setVar($var,$value) {
self::$$var = $value;
}
public static function getVar($var) {
return self::$$var;
}
}
PHP-Code:
container::setVar('bla','abc');
function xy() {
echo container::getVar('bla');
container::setVar('bla','xyz');
}
echo container::getVar('bla');
xy();
echo container::getVar('bla');
Hoffe das hat dir ein wenig geholfen.
Gruß,
Gaert
Lesezeichen