Инструменты пользователя

Инструменты сайта


limb3:ru:packages:web_app:session

Работа с сессией

Краткое описание

Для работы с сессией, в Limb есть специальный объект session, который можно получить через тулкит:

 $session = lmbToolkit :: instance()->getSession();
 $session->set('my_var', $value); // Поставить значение в сессию
 $var = $session->get('my_var');  // Получить значение из сессии
 
 $session->foo = $value; // Поставить значение в сессию
 $bar = $session->foo;  // Получить значение из сессии

Классы, реализующие работу с сессией, находятся в пакете SESSION.

Преимущества использования пакета SESSION:

  • Возможность легкой смены способа хранения сессионных данных. На данный момент поддерживается хранение сессионных данных в базе данных и при помощи файлов.
  • Автоматическое подключение необходимых классов до десериализации сессии. Вам не нужно больше об этом заботиться.
  • Единый set/get интерфейс для установки и получения данных из сессии. Это позволяет в случае необходимости, например, передать сессию в WACT-шаблон в качестве контейнера с данными.
  • Легкое установление и сброс фикстур при модульном тестировании.

Метод getSession() реализован в классе lmbWebAppTools.

Инициализация сессии. Фильтр lmbSessionStartupFilter

При работе с сессией используются 2 понятия:

  • Класс для работы с сессионными данными
  • Хранилище данных.

Хранище сессионных данных необходимо инициализировать. Инициализация производится в класса lmbSessionStartupFilter, который обычно входит в цепочку фильтров приложения, выполненного на базе Limb3.

lmbSessionStartupFilter опирается на константу LIMB_SESSION_USE_DB_DRIVER для определения, какой тип хранилица сессионных данных использовать.

  • Если LIMB_SESSION_USE_DB_DRIVER имеет значение false (это значение по-умолчанию), то используется базовый php-механизм хранения в файлах (класс lmbSessionNativeStorage)
  • LIMB_SESSION_USE_DB_DRIVER имеет значение true, то создается хранилище на основе таблицы базы данных (класс lmbSessionDbStorage)

При использовании класса lmbSessionDbStorage в качестве хранилища (вернее сказать, драйвера хранилища) сессионных данных, вы можете также использовать константу LIMB_SESSION_DB_MAX_LIFE_TIME, которая указывает время жизни сессии между двумя обращениями. Если эта константа не определена - то будет использоваться значение указанное в системных настройках для PHP.

Для хранения сессионных данных в базе данных используется таблице sys_session со следующей структурой:

CREATE TABLE `sys_session` (
  `session_id` VARCHAR(50) NOT NULL DEFAULT '',
  `session_data` BLOB NOT NULL,
  `last_activity_time` BIGINT(11) UNSIGNED DEFAULT NULL,
  PRIMARY KEY  (`session_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
   ____   __  ___   __ __ __  __   __ __
  / __/  /  |/  /  / //_/ \ \/ /  / //_/
 / _/   / /|_/ /  / ,<     \  /  / ,<   
/_/    /_/  /_/  /_/|_|    /_/  /_/|_|
 
limb3/ru/packages/web_app/session.txt · Последние изменения: 2010/11/10 10:02 (внешнее изменение)