====== Работа с сессией ====== ===== Краткое описание ===== Для работы с сессией, в 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;