Для работы с сессиями в 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;
});