{{TOC}} {{DOCVER 4.0=0da300f6445bec5a70d007f503834fce957b065b 16.10.2014 5:19:26, 4.1=efd541a0b218b1c6aafb73f0051c18ed150e3c24 25.05.2014 6:21:03, 4.2=d7b13440c003218ed79e9d508706eca01990122f 4.12.2014 5:01:15}} == Настройка == HTTP-приложения не имеют //состояний//. Сессии - способ сохранения информации о клиенте между отдельными запросами. Laravel поставляется со множеством различных механизмов сессий, доступных через единое API. Изначально существует поддержка таких систем, как ((http://memcached.org/ Memcached)), ((http://redis.io/ Redis)) и СУБД. Настройки сессии содержатся в файле %%(t)app/config/session.php%%. Обязательно просмотрите параметры, доступные вам - они хорошо документированы. По умолчанию Laravel использует драйвер **file** (!!(tl_note) в версии 4.0 драйвер **native** - //прим. пер.//!!), который подходит для большинства приложений. %%(DOCNEW 4.1=efd541a0b218b1c6aafb73f0051c18ed150e3c24 25.05.2014 6:21:03) **Зарезервированные ключи** Laravel использует внутренний ключ сессий %%(t)flash%%, поэтому нельзя добавлять элемент с таким именем в сессию. %% == Основы использования == **Сохранение переменной в сессии** %% Session::put('key', 'value'); %% **Добавление элемента к переменной-массиву** %% Session::push('user.teams', 'developers'); %% **Чтение переменной сессии** %% $value = Session::get('key'); %% **Чтение переменной или возврат значения по умолчанию** %% $value = Session::get('key', 'default'); $value = Session::get('key', function() { return 'умолчание'; }); %% %%(DOCNEW 4.2=d7b13440c003218ed79e9d508706eca01990122f 4.12.2014 5:01:15) **Прочитать переменную и забыть её** ~%% $value = Session::pull('key', 'default'); ~%% %% **Получение всех переменных сессии** %% $data = Session::all(); %% **Проверка существования переменой** %% if (Session::has('users')) { // } %% **Удаление переменной из сессии** %% Session::forget('key'); %% **Удаление всех переменных** %% Session::flush(); %% **Присвоение сессии нового идентификатора** %% Session::regenerate(); %% == Одноразовые данные == Иногда вам нужно сохранить переменную только для следующего запроса. Вы можете сделать это методом %%Session::flash()%% (!!(tl_note)//flash// ^^англ.^^ - вспышка - //прим. пер.//!!): %% Session::flash('key', 'value'); %% **Продление всех одноразовых переменных ещё на один запрос** %% Session::reflash(); %% **Продление только отдельных переменных** %% Session::keep(array('username', 'email')); %% == Сессии в базах данных == При использовании драйвера **database** вам нужно создать таблицу, которая будет содержать данные сессий. Ниже - пример такого объявления с помощью ((docs/v4/schema конструктора таблиц)): %% Schema::create('sessions', function ($table) { $table->string('id')->unique(); $table->text('payload'); $table->integer('last_activity'); }); %% Либо вы можете использовать команду ((docs/v4/artisan Artisan)) для создания этой миграции: %%(sh) php artisan session:table composer dump-autoload php artisan migrate %% == Драйверы == "Драйвер" определяет, где будут храниться данные для каждой сессии. Laravel поставляется с целым набором замечательных драйверов: * **file** - данные хранятся в %%(t)app/storage/sessions%%. * **cookie** - данные хранятся в виде зашифрованных ((docs/v4/requests#cookie+s)). * **database** - хранение данных в БД, используемой приложением. * **memcached** и **redis** - используются эти быстрые кэширующие хранилища пар //ключ/значение//. * **array** - данные содержатся в виде простых массивов PHP и не будут сохраняться между запросами. * **native** - использует встроенные средства PHP для работы с сессиями (!!(tl_note) только для версии 4.0, где он также используется по умолчанию - //прим. пер.//!!). .(alert) **Внимание:** драйвер **array** обычно используется для ((docs/v4/testing юнит-тестов)), так как он на самом деле не сохраняет данные для последующих запросов.