Bademeister: globale Variablen

Beitrag lesen

Hi.

wo ist hier der Unterschied??

function test($var, &$var2)
{
   //funktion
}

function test($var)
{
   global $var2;

//funktion
}

Der Unterschied ist, dass

1.: die zweite Funktion sich anmaßt, irgendetwas darüber zu wissen, wie die Welt um sie herum aussieht, und auch nur in einer maßgeschneiderten Welt funktionsfähig und existenzberechtigt ist. Das ist in vielerlei Hinsicht schlecht.

2.: selbet in einer maßgeschneiderten Welt (in der die zweite Funktionen tatsächlich tun würde, was sie soll) die erste Funktion dem Benutzer (sprich: dem Skript, das sie benutzt) die wertvolle Möglichkeit bietet, zu entscheiden, welche Variable er Deiner Funktion in den Rachen schmeißen will und welche er lieber von ihr fernhält.
Selbst wenn das de facto nicht die Flexibilität erhöhen sollte, weil der Funktionasufruf logisch mit einer anderen Variable keinen Sinn hätte, so erhöht es die Lesbarkeit enorm, weil man dem Funktionsaufruf ansieht, dass man damit einverstanden ist, dass die Funktion die Variable $var2 verändert.

Viele Grüße,
der Bademeister