Auge: global /Globale Variable funktioniert nicht wie erhofft

Beitrag lesen

problematische Seite

Hallo

da wird es doch genau erklärt:

nö.

"Durch das Deklararieren der Variablen $a und $b innerhalb der Funktion als global, weisen alle Referenzen zu beiden Variablen auf die nun globalen Werte. "

Ich hätte das eher so beschrieben:

Durch die Angabe von global $a, $b; werden die globalen Variablen innerhalb der Funktion verfügbar gemacht.

Und noch mehr. Das Codebeispiel und die folgende Erklärung sagen aus, dass das Ergebnis der Manipulation (der innerhalb der Funktion als global verfügbar gemachten Variablen) in der Funktion auch außerhalb zur Verfügung steht.

<?php
$a = 1;
$b = 2;

function Sum()
{
    global $a, $b;

    $b = $a + $b;
} 

Sum();
echo $b;
?>

„Das obige Skript gibt 3 aus.“ (außerhalb der Funktion!)

global wirkt also nicht nur innerhalb der Funktion (hole mir die Variablen von außen hierher), sondern verändert den Wert der Variablen nach Ausführung der Funktion auch außerhalb dieser.

Davon abgesehen wäre die Übergabe der Variablen als Parameter und die Verwendung eines Rückgabewerts meiner Meinung nach die meist zu bevorzugende Variante.

<?php
$a = 1;
$b = 2;

function Sum($a, $b)
{
    /**
     * Die Variablen können innerhalb der Funtion
     * auch anders benannt sein, hier habe ich sie
     * die Namen wegen copy'n'paste nicht verändert
     */
    $b = $a + $b;
    return $b;
} 

$b = Sum($a, $b);
echo $b;
?>

Tschö, Auge

--
Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
Hohle Köpfe von Terry Pratchett