Sven Rautenberg: global in verschachtelten Funktionen

Beitrag lesen

Moin!

Reiche das Array von außen nach innen durch

okay, wie kann ich dann in der inneren Funktion das array verändern?

über die Rückgabewerte

$arr=array();
array_push($arr,x1());

function x1()
{
  /* ... */
  return(x11());
}

  
Alternativ über Referenzvariablen:  
  
~~~php
  
function x13(&$var) {  
  $var[]=13; // neuen Wert dranhängen  
}  
  
$irgendwas = array();  
x13($irgendwas);  
echo $irgendwas[0]; // ergibt 13  

Vorteil: Die Variablennamen des globalen Raumes sind flexibel und müssen nicht so lauten, wie innerhalb der Funktion.

Außerdem kann zusätzlich auch noch ein Returnwert der Funktion entstehen.

Nachteil: Die Funktion muß zwingend mit einer Variablen als Parameter aufgerufen werden, auf Konstanten kann man keine Referenz bilden. Außerdem ist diese Art der Werterückgabe eher ungewöhnlich und nicht schön.

Meiner Ansicht nach ist das Gefährliche an globalen Variablen, dass Du ausserhalb der Funktionen nicht erkennen kannst, dass ihr Wert verändert wird.

Das problematische ist, dass eine globale Variable vom Namen her festgelegt ist. Sie muß innerhalb und außerhalb der Funktion gleich heißen.

Nun hat jeder Programmierer so seine Lieblingsvariablennamen. Wenn er jetzt zwei Funktionen schreibt, beide in separate Includes packt, und er jeweils den gleichen Variablennamen für seine globale Variable verwendet, hat er es in der Anwendung dieser Funktionen extrem schwer - vor allem, wenn die Funktionen mit den Variablen was komplett unterschiedliches machen, z.B. einmal Stringoperationen, das andere Mal Berechnung der Mehrwertsteuer.

Allein aus diesem Grund sind globale Variablen nie nie nie zu benutzen. Der Versuch ist strafbar! Es gibt keinen rationalen Grund, es zu tun, weil es mehr als genug vernünftige Alternativen gibt.

- Sven Rautenberg

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