Frage

Nehmen wir an, in meiner app Ich habe eine Objektinstanz auf Seite erstellt 1. Der Benutzer dann zu einem anderen Teil der App geht und ich möchte die Instanz bleiben. Wie kann ich die Instanz ‚retten‘? Sessions?

War es hilfreich?

Lösung

Ja, verwenden Sie eine Sitzung .

Rufen Sie session_start () am Anfang Ihrer Seite, dann speichern Sie Ihr Objekt mit so etwas wie $_SESSION['myobject']=$myobject;

Die spätere Seite kann $_SESSION['myobject'] zugreifen, nachdem es auch nennt session_start ()

Sie müssen sicherstellen, dass jede Seite, die diese Sitzung die Klasse für das Objekt verwendet definiert oder in der Lage ist auto-Lade es.

Ihre Klasse kann auch die magischen Methoden definieren __ Schlaf und __ aufzuwecken, die Sie Ihnen (wie Ressourcen, wie db Griffe) nicht wollen Serialisierung keine Membervariablen bereinigen lassen. Während __wakeup Sie diese wiederherstellen.

Andere Tipps

Es gibt zwei Möglichkeiten, die ich für meine Anwendungen verwendet haben. Sitzungen und Datenbank

Sitzungen ja, aber es wird eine neue Instanz mit den gleichen Eigenschaften und nicht die gleichen Instanz. Weitere Optionen sind unter Verwendung eines O / R-Mapper das Objekt in der DB zu speichern und den Schlüssel für sie in der Sitzung zu halten, oder mit einem eindeutigen Schlüssel Memcached verwenden (sagt die Session-ID) - aber das wäre noch nicht die gleicher Beispiel -. nur eine Instanz mit den gleichen Eigenschaften

Wenn Sie die genau die gleiche Instanz eines Objekts zwischen zwei Anfragen in PHP Ich fürchte, das ist unmöglich (nicht nicht , alles ist machbar - aber Sie‘ ll haben PHP oben auf irgendeiner Art von Anwendungsserver)

laufen

Sie grundsätzlich zwei Möglichkeiten:. Server-Seite Zustand oder Client-Seite Zustand

Server-Seite Zustand wird in der Regel durch Sitzungen getan. Dies ist die einfachste und leistungsstärkste Lösung, aber es hat einige Nachteile (Concurrency, nicht in der Lage Zustand im Laufe der Zeit zu bestehen, usw.).

Client-Seite Zustand kann über die URL beibehalten werden - Wird normalerweise in Query-String-Parameter. Zum Beispiel, „erinnern“ eine Variable $name zwischen zwei Seiten, könnten Sie einen Link auf der ersten Seite erstellen, wie diese: http://www.example.org/second_page.php?name=Jimbo, und die zweite Seite könnte dann die Variable durch $_GET erhalten. Das ist viel schwieriger, Recht zu bekommen, und es hat einige Einschränkungen, wie viel Zustand, den Sie zwischen den Seiten übertragen. Aus diesem Grunde haben die Menschen eine Tendenz mit Server-Zustand zu gehen, auch wenn Clientseite Zustand besser geeignet wäre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top