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.