На текущем практическом занятии рассмотрим два случая использования сессий: для сохранения пользовательских предпочтений и для идентификации пользователя.
Пользовательские предпочтения
Сохранение
предпочтений пользователя рассмотрим на примере выбранного пользователем языка (см. Глава 25, Создание многоязычного приложения). Доработаем один из методов контроллера LangController (все остальные методы будут работать по такому же принципу).
<?php
publicfunction EnAction()
{
$l10n = new Zend_Session_Namespace('L10N');
$l10n->lang = 'en';
Zend_Session::rememberMe();
// redirect to the referer
}
Теперь можно модифицировать процесс выбора локали в файле начальной загрузки.
<?php
$l10n = new Zend_Session_Namespace('L10N');
$locale = new Zend_Locale(isset($l10n->lang) ? $l10n->lang : null);
Zend_Registry::set('locale', $locale);
Идентификация пользователя
Идентификация была бы весьма ресурсоемкой и неудобной процедурой, если бы требовала ввода имени пользователя и пароля при каждом запросе. Чтобы избежать этого, данные, необходимые для идентификации, сохраняются с помощью сессий.
Для работы с сессиями используется специальный класс Zend_Auth_Storage_Session,
который следует интерфейсу Zend_Auth_Storage_Interface. Таким образом, при необходимости нативный класс может быть заменен пользовательским при условии следования им указанному интерфейсу.
По умолчанию класс Zend_Auth_Storage_Session использует пространство имен Zend_Auth. Это значение может быть перекрыто путем получения экземпляра класса идентификации с последующим вызовом метода setStorage(),
которому передается объект класса Zend_Auth_Storage_Session (требуемое название пространства имен передается конструктору этого класса).