# Session
## 简介
Session是一种比Cookie更安全的状态保存方式。Session理论上在退出浏览器时会失效,但取决于浏览器对Session的处理方法如何。Session的数据储存在服务器上,所以不易被篡改。PHP的Session借助Cookie来识别ID,从而达到不同客户端分配不同的SESSION ID,以防止“串号”现象发生。TarBlog的确基于PHP自身的Session实现方式,但是只调用两次$_SESSION,一次是在读取,一次是在保存,程序运行期间不操作$_SESSION。这样的好处是避免因Session读写导致并发时堵塞。除此之外,TarBlog还支持flash闪存Session,在下一次请求之后Session内容就会自动消失,用于一些系统提示。
## 实现原理
首先在实例化该类时,读取一次$_SESSION到成员变量并关闭session,之后的操作则读写之前保存在成员变量中的数据;程序结束之前,进行一次$_SESSION的保存。(好奇怎么实现的?自己看bootstrapper就明白了)
## 常用方法
### get($key, $default = null)
顾名思义,获取对应key的Session数据
### set($key, $value, $saveNow = false)
设置Session值,第三个参数为true时会马上保存Session值,而不是到程序结束时才保存。
### pop($key, $default = null)
类似于堆栈的弹出操作,获取对应key的Session数据后删除该数据。
### flash($key, $value)
闪存Session数据,在下一次请求结束后被删除。