Klasse Klasse! (Class in Session)

Nur mal ein kleiner Hinweis:
PHP:
$_SESSION['class'][__CLASS__] = $this;
erzeugt unter PHP5 auch nur eine Referenz auf das Objekt.
Unter PHP4 hingegen bekommst Du eine Kopie, was wohl der gewuenschte Effekt sein duerfte.

Mal ein kleines Beispiel, wozu ich aber gleich anmerken will dass es sich aufgrund der ausserhalb der Klasse genutzten Variable nicht unbedingt um gutes OOP handelt.
PHP:
<?php
class test
{
 var $x;
}
$a=new test();
$a->x=5;
$b=$a;
$b->x=2;
echo $a->x;
?>
Ausgabe mit PHP4: 5
Ausgabe mit PHP5: 2

Grund ist dass in PHP5 Objekte grundsaetzlich als Referenz uebergeben werden.
Will man ein Objekt kopieren muss clone genutzt werden.

Uebrigens, Objekte koennen auch ohne Serialisierung in die Session gesetzt werden. Grund ist dass der Session-Handler von PHP das Array $_SESSION eh serialisiert wenn es gespeichert wird.
 
Joa, hab eh nur noch PHP5 im Kopf, da php4 ja "tot" ist wie du mal gesagt hast.
Es scheint wohl alles nur durch umständliche Wege realisierbar zu sein, dass in dem Konstrukt die Klasse an die Session übergeben wird.
Da wollt ich wohl wieder zu viel von PHP ;)
Wir jetz so gemacht, das das Objekt serialisiert wird und ich __sleep und __wakeup verwende.

Danke für die ganzen Ideen.
Vielleicht wach ich ja irgendwann Nachts auf und find ein anderen Weg :D
 
Alle meine Beispiele sind natürlich auf PHP5 gewesen.

Und wie schon beschrieben wird dort anscheinend das ganze Objekt gehalten
(obwohl man nur die Referenz speichert).

Für mich ein eher undurchsichtiges Verhalten...
Könnte das jemand genauer begründen?

lg
 
Zurück