30.5. Теория

Zend_Session предоставляет внутренний интерфейс для инкапсуляции всего доступа к сиглетону $_SESSION с использованием статических методов. В общем случае разработчики не должны иметь прямой доступ к $_SESSION, когда используют Zend_Session и Zend_Session_Namespace. Тем не менее, "унаследованный" код может сосуществовать с Zend_Session благодаря тому, что пространства имен, используемые Zend_Session_Namespace, не перекрываются с ключами в массиве $_SESSION, используемым унаследованным кодом. В настоящее время не проводилось исследований по выявлению проблемных ситуаций, кода действующий код (и другие PHP-приложения) совместно использует или пререкрывают постоянные данные сессий. Поэтому рекомендуется следовать лучшей практике программирования, описанной в следующих разделах, во избежание осложнений.

Общее управление сессиями производится с использованием статических методов класса Zend_Session, это влияет на общее поведение сессий, управляемыми Zend_Session_Namespace и связанными с ним компонентами. Большинству разработчиков непосредственное использование Zend_Session может не понадобиться.

В отличие от $_SESSION, Zend_Session_Namespace логически выделяет данные сессий в отдельные пространства имен посредством сохранения данных в массиве и сохранении этого массива в $_SESSION, используя имя пространства имен в качестве ключа. Создание экземпляра класса Zend_Session_Namespace вернет неуникальное "окно" к выбранному пространству имен. Одно и то же пространство имен может иметь множество "окон", несморя на то, что через определенный ключ (имя пространства имен) доступно только одно пространство имен. Эти экземпляры обеспечивают непосредственное манипулирование сессионными данными для определенных пространств имен. Таким образом, экземпляры Zend_Session_Namespace помогают ограничить область видимости посредством введения переменных с локальной областью видимости (объект Zend_Session_Namespace), фактически это импорт определенного пространства имен в локальную область видимости.