Для работы с сессиями в Slim есть библиотека slim-session.
Подключение через composer
composer require bryanjhv/slim-session:~4.0
Добавление, как Middleware
$app = \Slim\Factory\AppFactory::create(); $app->add( new \Slim\Middleware\Session([ 'name' => 'app_session', 'autorefresh' => true, 'lifetime' => '1 hour', ]) );
Helper, как функция
Можно использовать с параметрами, как в laravel. Но мне такой вариант не нравится из за неочевидности действия происходящего с ними. Можно легко забыть, задаются или получаются аргументы.
use SlimSession\Helper; if (! function_exists('session')) { function session() { $session = new Helper(); //isset($key) ? $session->get($key, $default) : $session; return $session; } }
Пример использования
Пример использования класса Helper для операций с php сессиями.
$app->get('/', function ($req, $res) {
// or $this->get('session') if registered
$session = new \SlimSession\Helper();
// Check if variable exists
$exists = $session->exists('my_key');
$exists = isset($session->my_key);
$exists = isset($session['my_key']);
// Get variable value
$my_value = $session->get('my_key', 'default');
$my_value = $session->my_key;
$my_value = $session['my_key'];
// Set variable value
$app->get('session')->set('my_key', 'my_value');
$session->my_key = 'my_value';
$session['my_key'] = 'my_value';
// Merge value recursively
$app->get('session')->merge('my_key', ['first' => 'value']);
$session->merge('my_key', ['second' => ['a' => 'A']]);
$letter_a = $session['my_key']['second']['a']; // "A"
// Delete variable
$session->delete('my_key');
unset($session->my_key);
unset($session['my_key']);
// Destroy session
$session::destroy();
// Get session id
$id = $this->session::id();
return $res;
});