Dez 19 2008
Typen von Referenzen in PHP, Objekte löschen
Wieder was gelernt:
Es gibt in PHP zwei Typen von Objektreferenzen, auch wenn es keine Dokumentation dazu gibt (Wer eine findet bitte sagen..!).
Im Handbuch steht nur: Objekte werden immer als Referenz übergeben
Das stimmt natürlich, nur ist es nicht ganz so einfach. Das Problem fällt allerdings erst auf, wenn man Objekte kontrolliert zerstören will.
$obj = NULL; # (1)
Sollte ein Objekt zerstören, wie unset(). Doch was wenn man vorher
$obj2 = $obj;
gemacht hat? Plötzlich zerstört der erste Befehl (1) nichtmehr, er setzt nur die erste Variable auf NULL. Nun das selbe ein bischen verändert:
$obj2 = &$obj; # & für Referenz sollte eigentlich nicht nötig sein
(1) Führt nun dazu, dass beide Variablen NULL sind. Huch?
Diese Referenzen heißen entweder hard/soft oder echt/unecht, wie auch immer.

