30.5. Theorie

Zend_Session bietet ein internes Interface um alle Zugriffe auf das Singleton $_SESSION zu kapseln, durch Verwendung von statischen Methoden. Normalerweise sollten Entwickler $_SESSION nicht direkt aufrufen, wenn Zend_Session oder Zend_Session_Namespace verwendet wird. Trotzdem ist es möglich, für vorhandenen Code, mit Zend_Session zu koexistieren, solange die Namensräume welche von Zend_Session_Namespace verwendet werden nicht mit den Schlüsseln, die vom bestehenden Code in $_SESSION verwendet werden, übereinstimmen. Zur Zeit werden keine Versuche gemacht problematische Situationen zu entdecken, wo bestehender Code (oder andere PHP Anwendungen) ungewollt Session Daten untereinander teilen und überlappen. Deswegen sind Entwickler dazu angehalten den in den anderen Sektionen beschriebenen beste Praxis-Beispielen zu folgen um Komplikationen zu vermeiden.

Das ganze Management und die Manipulation des globalen Session Managements finden statt, durch Verwendung von statischen "Klassen" Methoden, welche in Zend_Session definiert sind und das komplette Verhalten von Sessions, welche durch Zend_Session_Namespace verwaltet werden, beeinflußt. Die meisten Entwickler werden nicht in Verlegenheit kommen Zend_Session direkt zu verwenden.

Anders als $_SESSION verteilt Zend_Session_Namespace alle Session Daten logisch in seperate Namensräume, durch das Speichern der Daten in einem PHP Array und dem Speichern des Array in $_SESSION wobei der Namensraum als Schlüssel verwendet wird. Das Erzeugen einer Instanz von Zend_Session_Namespace gibt ein nicht-eindeutiges "Fenster" an den ausgewählten Namensraum zurück. Mehrere "Fenster" sind für den gleichen Namensraum möglich, ausserdem ist nur ein Namensraum möglich für einen durch ein Programm vergebenen Schlüssel (der Name des Namensraums). Diese Instanzen dienen der Einschränkung der Manipulation von Session Daten für einen definierten Namensraum, der explizit angegeben wird, wenn die Instanz von Zend_Session_Namespace erstellt wird. Zend_Session Instanzen helfen deswegen die Sicht zu restriktieren durch Einführung einer lokalen Sicht-Variable (Zend_Session_Namespace Instanz Objekt) die effektiv einen definierten Session Namensraum in die lokale Sicht importiert.