Singleton über Seitenaufruf hinaus

Singleton über Seitenaufruf hinaus

am 30.06.2006 15:24:06 von Kay-Michael Voit

Hi,
wie würdet ihr in PHP4 einen Singleton implementieren, der über einen
einzelen Seitenaufruf hinaus erhalten bleibt?
Direkt eine Session-Variable als Objektspeicher verwenden, oder geht das
eleganter?

Gruß,
Kay

Re: Singleton über Seitenaufruf hinaus

am 30.06.2006 15:31:05 von thornythegod

Kay-Michael Voit schrieb:

> wie würdet ihr in PHP4 einen Singleton implementieren, der über einen
> einzelen Seitenaufruf hinaus erhalten bleibt?
> Direkt eine Session-Variable als Objektspeicher verwenden, oder geht das
> eleganter?

Spontan würde ich vorschlagen, dass du das Objekt serializiert in einer
Datein speicher kannst und vor der nächsten Instanzierung überprüfst, ob
das Objekt in dieser Datei vorliegt.

Gruß,
Torsten

Re: Singleton über Seitenaufruf hinaus

am 30.06.2006 15:40:54 von Kay-Michael Voit

> Spontan würde ich vorschlagen, dass du das Objekt serializiert in einer
> Datein speicher kannst und vor der nächsten Instanzierung überprüfst, ob
> das Objekt in dieser Datei vorliegt.

Ich meinte mit einzelnem Seitenabruf eigentlich innerhalb der
Lebensdauer einer Session. Und da brauche ich ja nichts zu serialisieren.

Geht es also eleganter (funktionieren tut es) als

class User
{
function getInstance()
{
$sessionvar="1GJHGgajd65675HKhksds77587";
if(is_a('User',$_SESSION[$sessionvar]))
{
return $_SESSION[$sessionvar];
}
else
{
return $_SESSION[$sessionvar]=new User();
}
}
}

Re: Singleton über Seitenaufruf hinaus

am 30.06.2006 15:49:48 von thornythegod

Kay-Michael Voit schrieb:

>>Spontan würde ich vorschlagen, dass du das Objekt serializiert in einer
>>Datein speicher kannst und vor der nächsten Instanzierung überprüfst, ob
>> das Objekt in dieser Datei vorliegt.
>
> Ich meinte mit einzelnem Seitenabruf eigentlich innerhalb der
> Lebensdauer einer Session. Und da brauche ich ja nichts zu serialisieren.

Das habe ich fast schon befürchtet :P
Anbei: Es wird serializiert in der Session gespeichert ;)

> Geht es also eleganter (funktionieren tut es) als

Dazu fällt mir nichts ein. Wenn du es logisch an die Session bindest,
mußt du auch damit leben. :P

Warum eigentlich dieses Vorgehen?

Gruß,
Torsten

Re: Singleton über Seitenaufruf hinaus

am 30.06.2006 16:21:28 von Kay-Michael Voit

>> Lebensdauer einer Session. Und da brauche ich ja nichts zu serialisieren.
>
> Das habe ich fast schon befürchtet :P
> Anbei: Es wird serializiert in der Session gespeichert ;)
Ich sage ja auch, ICH muss da nichts serialisieren. Was im Hintergrund
passiert, ist ja sekundär ;)

> Dazu fällt mir nichts ein. Wenn du es logisch an die Session bindest,
> mußt du auch damit leben. :P
>
> Warum eigentlich dieses Vorgehen?

Nunja, der Klassenname impliziert es schon. Warum sollte ich ein
Usermanagement über eine Session hinweg behalten wollen? Da ist es wohl
effizienter, direkt in die Session zu speichern, als große
Dateioperationen auszuführen. Da wäre evt sogar eine DB noch effizenter.

Wenn die Session mal aus ist, dann ist es eh vorbei mit dem Userbesuch,
da brauche ich nciht noch irgendwelche Reste in Dateien.