概述
这里只是简单讲一下用法,如果想更详细的了解,去看 官方手册 比较好。
和请求和响应类似, 默认可通过为yii\web\Session 实例的session 应用组件 来访问sessions。
利用Yii操作session
// 首先,加载session组件
$session = Yii::$app->session();
// 检查session是否开启
if($session->isActive){
// session已经打开
}
// 开启session
$session->open();
// 设置name的session值为张三
$session->set('name','张三');
// 跟以下语句效果相同
$_SESSION['name'] = '张三';
// 获取session中name的值
$session->get('name','my');
// 获取时,会自动打开session,无需手动。而且如果name值不存在时,会默认输出'my'
// 移除session中的name变量
$session->remove('name');
// 移除全部的session变量
$session->removeAll();
// 查看session是否存在name变量
$session->has('name');
// 关闭session
$session->close();
// 销毁session中所有已经注册的数据
$session->destroy();
Flash 数据
简单介绍
Flash数据是一种特别的session数据,它一旦在某个请求中设置后, 只会在下次请求中有效,然后该数据就会自动被删除。 常用于实现只需显示给终端用户一次的信息, 如用户提交一个表单后显示确认信息。
实现方式
// 首先,加载session组件
$session = Yii::$app->session();
// 设置名为'success' flash 信息
$session->setFlash('success','This is success!');
// 获取并显示'success' flash 信息
echo $session->getFlash('success');
// 查看'success' flash 信息是否存在
if($session->hasFlash('success')){
// 存在,判断后,自动删除
}
// 获取所有的 flash 信息
$data = $session->getAllFlashes();
// 移除 'success' flash 信息
$session->removeFlash('success');
// 移除所有的 flash 信息
$session->removeAllFlash();
// 首先,加载session组件
$session = Yii::$app->session();
// 设置名为'success' flash 信息
$session->setFlash('success','This is success!');
// 在名称为"success"的flash信息增加数据
$session->addFlash('success','I love you!');
$session->addFlash('success','I miss you!');
$session->addFlash('success','I want you!');
// 获取并显示'success' flash 信息
$data = $session->getFlash('success');
var_dump($data);
/* 会以数组的方式呈现
array(4) {
[0]=> string(16) "This is success!"
[1]=> string(11) "I love you!"
[2]=> string(11) "I miss you!"
[3]=> string(11) "I want you!"
}*/