- Mitglied seit
- 08.03.2004
- Beiträge
- 1.574
- Reaktionen
- 0
Code:
<?php
function test_global_ref() {
global $obj;
$obj = &new stdclass;
}
function test_global_noref() {
global $obj;
$obj = new stdclass;
}
test_global_ref();
var_dump($obj);
test_global_noref();
var_dump($obj);
?>
wenn ihr das mal ausprobiert kommt das als Ergebnis raus:
Code:
NULL
object(stdClass)(0) {
}
Ich hab das soweit verstanden, dass da NULL ausgegeben wird, weil global eigentlich eine Variable erzeugt auf die man im lokalen Bezug nur eine Referenz hat. Trotzdem versteh ich nicht ganz, warum die Referenz auf die globale Variable nicht einfach dafür sorgt, dass in der globalen Variable die Referenz auf das neue Objekt gespeichert wird.
Beim schreiben komm ich grad auf die Idee, dass durch das global die $obj-Variable vielleicht allgemein einfach als Referenzvariable gebraucht wird. Nach dem "= &new" zeigt diese dann nicht mehr auf die globale Variable sondern direkt auf das Objekt. Und wenn man dann die global erzeugte Variable $obj ausgeben will, wurde nicht darin die Referenz gespeichert, sondern nur in der lokalen Variable. Deshalb bleibt die globale Variable leer. Haut das so ungefähr hin?