Sven Rautenberg: global in verschachtelten Funktionen

Beitrag lesen

Moin!

Kleines Beispiel- Skript:
<?PHP
$a = 1;
function x1()
{
  $b = 2;
  function x11()
  {
    global $a, $b;
    $c = 3;
    echo "a=[".$a."] b=[".$b."] c=[".$c."]<br>\n";
  }
  x11();
}
x1();
?>

Du kannst keine lokalen Funktionen in PHP definieren!

Es ist ein Fehler, innerhalb einer Funktion wieder eine Funktion zu definieren. Das wird dir spätestens dann klar, wenn du die äußere Funktion ein zweites Mal aufrufst. Und wenn Funktionen nur dafür gemacht sind, ein einziges Mal aufgerufen zu werden, dann müssen es keine Funktionen sein.

Definiere immer alle Funktionen auf globaler Ebene, nie ineinander verschachtelt!

Ausgehend von dieser These ergibt sich für dein eigentliches Problem vermutlich eine ganz andere Lösung.

Zumal das Verwenden von globalen Variablen auch ganz extrem böse ist.

Warum liest du eigentlich nicht häufiger hier im Forum zu PHP-Themen mit? Das hätte dich im Laufe der Jahre schon deutlich weiter nach vorn gebracht in deinen Programmierkenntnissen, und du würdest nicht immer auf solche Advanced-n00b-Fallen auflaufen.

- Sven Rautenberg

--
"Love your nation - respect the others."