• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

PHP Frage: Warum erste Ausgabe NULL?

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?
 
Oben