Zend_Session
zapewnia wewnętrzny interfejs do
hermetyzowania całego dostępu do singletona $_SESSION
używając statycznych metod. Ogólnie rzecz biorąc, programiści nie
powinni bezpośrednio używać $_SESSION
, gdy używają
klas Zend_Session oraz Zend_Session_Namespace. Jednak możliwe jest to,
żeby obcy kod współistniał z Zend_Session, pod warunkiem, że nazwy
przestrzeni nazw używane przez Zend_Session_Namespace nie pokrywają się
z kluczami w tablicy $_SESSION
używanymi przez obcy kod.
Obecnie, nie jest robione nic w celu wykrycia problematycznych sytuacji,
w których obcy kod (lub inna aplikacja PHP) będą używać danych stanu
naszej sesji. Dlatego namawiamy programistów do pisania aplikacji w
oparciu o najlepsze sposoby opisane w innych sekcjach, aby zapobiec
komplikacjom.
Całe zarządzanie i manipulowanie globalnym zarządzaniem sesją przeprowadzane jest używając statycznych metod klasy zdefiniowanych w Zend_Session. Mają one wpływ na całe zachowanie sesji zarządzanych przez Zend_Session_Namespace oraz powiązane komponenty. Większość programistów nie będzie używać klasy Zend_Session bezpośrednio.
W przeciwieństwie do superglobalnej tablicy $_SESSION
,
Zend_Session_Namespace logicznie segreguje wszystkie dane sesji w
osobne przestrzenie nazw, składując dane w tablicy PHP i składując
ją w tablicy $_SESSION
używając nazwy przestrzeni nazw
jako klucza. Przy tworzeniu instancji Zend_Session_Namespace zwracane
jest nieunikalne "okno" dla wybranej przestrzeni nazw. Jest możliwe
otworzenie wielu "okien" dla tej samej przestrzeni nazw, jednak tylko
jedna przestrzeń nazw będzie istniała dla danego klucza (nazwy
przestrzeni nazw). Te instancje służą do ograniczenia manipulacji danymi
stanu sesji do specyficznej przestrzeni nazw, dokładnie tej, którą
określono przy tworzeniu instancji Zend_Session_Namespace. Dlatego
instancje Zend_Session pomagają ograniczyć zakres wprowadzając zmienną o
lokalnym zakresie (obiekt instancji Zend_Session_Namespace), który
efektywnie importuje określoną przestrzeń nazw do lokalnego zakresu.