Moin!
Wenn ich mit per AJAX asynchron etwas aus einer Datenbank abrufe und dafür ein PHP Skript aufrufen muss welches die gleiche Klasse verwendet die schon aufgerufen ist im aktuellen Dokument, nochmal verwenden?
Also ich meine kann ich das als Singleton-Pattern implementieren so das ich nicht erneut ein Objekt erstellen muss?
Dein Wunsch kann kaum erfüllt werden, weil du etwas willst, was man in PHP normalerweise nicht will. Deswegen auch Toms etwas kryptische Antwort.
Ein Singleton lebt in PHP nur vom Zeitpunkt seiner Instanziierung innerhalb des aufgerufenen Skripts bis zum Ende dieses Skripts. Und zwar PRO REQUEST separat. Es ist also in dem Sinne gar kein wirkliches, serverübergreifendes Singleton.
Insofern ist dein Versuch, einen zweiten HTTP-Request über dasselbe Singleton laufen zu lassen, schon von vornherein zum Scheitern verurteilt, weil es in jedem Fall neu instanziiert werden würde, vollkommen unabhängig davon, was in dem Request davor passierte.
Und auch der Versuch, das Singleton irgendwie in einem Speicherbereich zwischenzuparken hilft nicht viel, weil das im Prinzip wirklich nur die Objektvariablen hinüberrettet, nicht jedoch die Datenbankconnection oder sonstige Ressourcen. Die müssen beim Wiederbeleben des Objekts so oder so neu angebunden werden.
Im Grunde genommen würdest du mit dem Versuch, das Singleton zu persistieren, sehr viel Aufwand verursachen, ohne auch nur den geringsten Vorteil zu erzielen.
- Sven Rautenberg