Forum und email

Was Referenzen nicht sind

Wie bereits gesagt: Referenzen sind keine Zeiger. Das bedeutet, der folgende Code tut nicht, was zum Beispiel ein C Programmierer erwarten würde:

function foo (&$var) {
    $var =& $GLOBALS["baz"];
}
foo($bar);

Folgendes wird passieren: $var in foo wird zunächst an $bar aus der aufrufenden Instanz, dann aber an $GLOBALS["baz"], gebunden. Es gibt keine Möglichkeit, $bar aus der aufrufenden Instanz mittels Referenz-Mechanismen an etwas anderes zu binden, da $bar in der Funktion foo nicht zur Verfügung steht ($bar wird durch $var repräsentiert; $var verfügt nur über Variableninhalt, besitzt aber keinen name-to-value Eintrag in der Symboltabelle der aufrufenden Instanz).