介绍
今天就跟大家聊聊有关饼干与会话在Yii框架中的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
<强>会话强>
和请求和响应类似,默认可通过为Yii \ web \会话实例的会话应用组件来访问。
<强>开启和关闭会议强>
可使用以下代码来开启和关闭会话。
session 美元;=,Yii:应用程序→美元会话;//,检查会话是否开启, if (会话→美元isActive),…//,开启会话 会话→美元open ();//,关闭会话 会话→美元close ();//,销毁会话中所有已注册的数据 会话→美元毁灭();
多次调用yii \ web \会话::open()和yii \ web \会话::关闭()方法并不会产生错误,因为方法内部会先检查会话是否已经开启。
<强>访问会话数据强>
访问数据存储在会话中,您可以执行以下操作:可使用如下方式访问会话中的数据:
session 美元;=,yii:应用程序→美元会话;//,获取会话中的变量的值,以下用法是相同的: language 美元;=,会话→美元得到(& # 39;语言# 39;); 美元$ language =,会话(& # 39;语言# 39;); $ language =,收取($ _SESSION[& # 39;语言# 39;]),?,_SESSION美元[& # 39;语言# 39;],:,空;//,设置一个会话变量,以下用法是相同的: 美元会话→设置(& # 39;语言# 39;,,& # 39;en - us # 39;); $会话[& # 39;语言# 39;],=,& # 39;en - us # 39;; $ _SESSION[& # 39;语言# 39;],=,& # 39;en - us # 39;;//,删除一个会话变量,以下用法是相同的: 美元会话→删除(& # 39;语言# 39;); 设置(会话美元[& # 39;语言# 39;]); 设置($ _SESSION[& # 39;语言# 39;]);//,检查会话变量是否已存在,以下用法是相同的: if (会话→美元(& # 39;语言# 39;)),… if (收取($会话[& # 39;语言# 39;])),… if (收取($ _SESSION[& # 39;语言# 39;])),…//,遍历所有会话变量,以下用法是相同的: foreach (session 美元;as name 美元;=祝辞,美元值),… foreach (_SESSION 美元;as name 美元;=祝辞,美元值),…
补充:当使用会话组件访问会话数据时候,如果会话没有开启会自动开启,这和通过$ _SESSION不同,$ _SESSION要求先执行session_start ()。
当会话数据为数组时,会话组件会限制你直接修改数据中的单元项,例如:
session 美元;=,Yii:应用程序→美元会话;//,如下代码不会生效 $会话[& # 39;验证码# 39;][& # 39;数字# 39;],=,5; $会话[& # 39;验证码# 39;][& # 39;一生# 39;],=,3600;//,如下代码会生效: $会话[& # 39;验证码# 39;],=,( & # 39;才能号码# 39;,=祝辞,5, & # 39;才能一生# 39;,=祝辞,3600年, ];//,如下代码也会生效: echo 会话美元[& # 39;验证码# 39;][& # 39;一生# 39;];
可使用以下任意一个变通方法来解决这个问题:
session 美元;=,Yii:应用程序→美元会话;//,直接使用_SESSION 美元;(确保Yii::应用程序→美元会话→打开(),已经调用) $ _SESSION[& # 39;验证码# 39;][& # 39;数字# 39;],=,5; $ _SESSION[& # 39;验证码# 39;][& # 39;一生# 39;],=,3600;//,先获取会话数据到一个数组,修改数组的值,然后保存数组到会话中 美元$ captcha =,会话(& # 39;验证码# 39;); $ captcha[& # 39;数字# 39;],=,5; $ captcha[& # 39;一生# 39;],=,3600; $会话[& # 39;验证码# 39;],=,美元验证码;//,使用ArrayObject 数组对象代替数组 $会话[& # 39;验证码# 39;],=,new \ ArrayObject; … $会话[& # 39;验证码# 39;][& # 39;数字# 39;],=,5; $会话[& # 39;验证码# 39;][& # 39;一生# 39;],=,3600;//,使用带通用前缀的键来存储数组 $会话[& # 39;captcha.number& # 39;],=, 5; $会话[& # 39;captcha.lifetime& # 39;],=, 3600;
为更好的性能和可读性,推荐最后一种方案,也就是不用存储会话变量为数组,而是将每个数组项变成有相同键前缀的会话变量。
<>强自定义会话存储强>
yii \ web \会话类默认存储会话数据为文件到服务器上,yii提供以下会话类实现不同的会话存储方式:
- <李>
yii \ web \ DbSession:存储会话数据在数据表中
李> <李>yii \ web \ CacheSession:存储会话数据到缓存中,缓存和配置中的缓存组件相关
李> <李>yii \复述\会话:存储会话数据到以复述,作为存储媒介中
李> <李>yii \ mongodb \会话:存储会话数据到mongodb。