Ist es üblich, PHP-Objekte am Leben zu halten, indem sie in Sitzungsvariablen gespeichert werden?

8

Ich bin neu in OOP mit PHP und die Idee scheint in gewisser Hinsicht sinnlos. In nicht webbasierten Sprachen lebt das Objekt während der gesamten Lebensdauer des Programms (von der Ausführung bis zum Beenden). In dieser Situation macht es Sinn, weil Sie die Klasse erstellen und dann zur Laufzeit initialisieren, wo Sie häufig darauf zugreifen können. Da die Ausführung einer Anwendung jedoch in vielen Phasen (Seitenladevorgänge) stattfinden kann, kann die Lebensdauer des Objekts nur einen kleinen Teil der Zeit ausmachen, in der eine Anwendung ausgeführt wird. So scheint es mir, dass die einzige Möglichkeit, Objekte während der Verwendung der Anwendung am Leben zu erhalten, darin besteht, dieses Objekt nach der Initialisierung in einer Sitzungsvariablen zu speichern. Ist das gängige Praxis oder gibt es andere Mittel, um die Leistungsfähigkeit von OOP in PHP effektiver zu nutzen?

    
Kenneth 15.06.2011, 00:44
quelle

3 Antworten

8

Auf der PHP-Website gibt es einen Artikel, der sich speziell damit beschäftigt: Objekte serialisieren - Objekte in Sitzungen . Es ist absolut nichts falsch daran, Objekte in Ihrer Sitzung zu serialisieren, aber wie in diesem Artikel vorgeschlagen:

  

Es wird dringend empfohlen, wenn ein   Anwendung serialisiert Objekte, z   Verwenden Sie später in der Anwendung, dass die   Anwendung enthalten die Klasse   Definition für das ganze Objekt   die Anwendung. Vielleicht nicht   führen dazu, dass ein Objekt unserialisiert wird   ohne eine Klassendefinition ...

    
Francois Deschenes 15.06.2011, 04:42
quelle
2

Es kann immer noch sehr nützlich sein, Objekte mit kurzen, zeitlich begrenzten Lebensdauern zu verwalten. Vielleicht möchten Sie mit zwei verschiedenen Arten von Datenbankservern kommunizieren - Objekte, die wissen, wie Abfragen für diese Datenbankserver erstellt werden, können sehr praktisch sein. Sie, der Programmierer, können auf die gleiche Weise mit ihnen interagieren, aber hinter den Kulissen könnte man einen Unix-Domain-Socket verwenden, um mit einem lokalen PostgreSQL zu kommunizieren, und der andere könnte eine TCP-Verbindung aus einem Sitzungspool verwenden, um mit einer Oracle-Instanz zu sprechen .

Es gibt objektorientierte Programmierung, um Verkapselung und Abstraktion bereitzustellen. Beide sind nützlich, selbst wenn die beteiligten Objekte in 0,5 Sekunden erstellt, live und absterben.

    
sarnold 15.06.2011 08:02
quelle
1

Mit PHP können Sie ein Objekt nicht am Leben erhalten, sodass Sie es nicht in der Sitzung speichern können, um Leistung zu erzielen. PHP wird das Objekt immer serialisieren, wenn es in die Sitzung schreibt und das Lesen aus der Sitzung deserialisiert.

Um Ihre Frage zu beantworten, ist es sehr üblich, ein Objekt in einer Sitzung zu speichern, aber nicht aus Leistungsgründen. Speichern und Lesen von der Sitzung sind ruhig schnell, also würde ich nur nach Optimierungen suchen, wenn Sie sicher sind, dass dies ein Flaschenhals ist.

    
martinstoeckli 15.06.2011 12:44
quelle

Tags und Links