Сессии в Yiiframework 2.x

Сессии предназначены для хранении информации о пользователе при переходе между страницами. При использовании сессий данные хранятся во временных файлах на сервере. Рассмотрим использование сессий в Yii.

Открытие и закрытие сессий

use  yii\web\Session;
// инициализация сессии
$session = Yii::$app->session;
// проверка сессии на открытие
if ($session->isActive) ...
// открытие сессии
$session->open();
// закрытие сессии
$session->close();
// уничтожаем все зарегистрированные сессии
$session->destroy();

Сохранение сессии в переменную

$session = Yii::$app->session;
$session->set('username', 'Ivan');
//или
$session['username'] = 'Ivan';
//или
$_SESSION['username'] = 'Ivan';

Получение сессии

$session = Yii::$app->session;
$username = $session->get('username');
//или
$username = $session['username'];
//или
$username = isset($_SESSION['username']) ? $_SESSION['username'] : null;

Удаление переменной из сессии

$session = Yii::$app->session;
$session->remove('username');
//или
unset($session['username']);
//или
unset($_SESSION['username']);

Проверка на существование переменной в сессии

if ($session->has('username')) 
//или
if (isset($session['username'])) 
//или
if (isset($_SESSION['username'])) 

Список всех переменных в сессии

foreach ($session as $session_name => $session_value)
	echo $session_name.' - '.$session_value;
//или
foreach ($_SESSION as $session_name => $session_value)
	echo $session_name.' - '.$session_value;

Массив переменных в сессии

$session = Yii::$app->session;
$session['user'] = [
    'id' => 1,
    'username' => 'Ivan',
];
echo $session['user']['id'];
echo $session['user']['username'];

$session['user.id'] = 1;
$session['user.username'] = 'Ivan';
Так работать не будет!
$session['user']['id'] = 1;
$session['user']['username'] = 'Ivan';

Флеш сообщения в сессии

$session = Yii::$app->session;
// устанавливаем значение flash сообщения
$session->setFlash('username', 'Вы зарегистрированы');
// проверяем наличие сообщения
$result = $session->hasFlash('username');
// получаем и отображаем сообщение
echo $session->getFlash('username');