30.5. Teoria

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.