2016-03-30 8 views
2

Ich habe eine $foo globale Variable definiert.PHP globales Schlüsselwort und Zuordnung

Später möchte ich $foo auf etwas anderes setzen.

public function bar() 
{ 
    global $foo; 
    $foo = 'hello'; 
} 

Gibt es unerwartete Nebenwirkungen, um diese auf eine Linie zu verkürzen?

public function bar() 
{ 
    global $foo = 'hello'; 
} 

Ich habe in the documentation sah und nicht sehen, sie zu deklarieren und die Variable auf der gleichen Linie zuweisen. Daher frage ich mich, ob jemand anderes Probleme dabei hat oder ob es nur eine schlechte Programmierpraxis ist, es auf eine Zeile zu setzen.

Antwort

2

Wenn Sie versuchen, den Code auszuführen, den Sie in Ihrer Frage vorgeschlagen haben, erhalten Sie einen Syntaxfehler. Sie können keine globale Variable wie oben beschrieben definieren.

Wenn Sie diesen Wert in einer einzelnen Zeile noch definieren wollte könnten Sie die $GLOBALS Array verwenden, anstatt wie folgt aus:

public function bar(){ 
    $GLOBALS['foo'] = 'hello'; 
} 

Hier the documentation wenn Sie einen Blick haben wollen.


Sie konnten die Variable einrichten hier:

function bar(){ 

    global $hello; 
    $hello = "hello"; 

} 

Dann später bearbeiten es wie folgt aus:

function foo(){ 
    $GLOBALS['hello'] = "world"; 
} 

Wenn Sie diesen Code lautete:

bar(); 
foo(); 

print_r($GLOBALS); 

Der Wert $GLOBALS['hello'] ist 'world'. Wenn Sie umgekehrt mit foo(); ausführen, die vor bar(); ausgeführt werden, erhalten Sie stattdessen 'hello' als den globalen Wert.

+1

Vielen Dank für die Antwort. Sie würden denken, dass sie 'global $ hallo =" hallo "sagen würden;' würde einen Fehler werfen, wenn man 'static $ hallo =" Hallo "betrachtet;' wirft keinen Fehler auf. – GreeKatrina