ZF2 Session
第一次记录,用词不当或说法不正确,请留言!
在zf2中要简单使用session,你需要引入的文件:
use Zend\Authentication\Storage\Session as SessionStorage;
use后面的as相当于是别名,别名是我理解的,真正的说法是什么就不知道了!as不要也行,实例化的时候下面两者是等效的:
/*First one*/
$session = new Session();
/*Second one SessionStorage是Session的别名*/
$session = new SessionStorage();
上面use引入的文件实际上就是
Zend\Authentication\Storage\Session.php 这个文件
当你使用这个类的时候,要实例化一个session类;
$session = new SessionStorage();
实例化的时候,你可以传入几个参数,构造函数如下:
/**
* Sets session storage options and initializes session namespace object
*
* @param mixed $namespace
* @param mixed $member
* @param SessionManager $manager
*/
public function __construct($namespace = null, $member = null, SessionManager $manager = null)
{
if ($namespace !== null) {
$this->namespace = $namespace;
}
if ($member !== null) {
$this->member = $member;
}
$this->session = new SessionContainer($this->namespace, $manager);
}
第一参数是命名空间:说白了就是在$_SESSION数组里面再嵌入一个数组 ,这个命名空间可以防止session变量名重复的情况;
第二个参数:这个参数将会赋值给$member这个protected属性 我贴一个结果:
Array
(
[__ZF] => Array
(
[_REQUEST_ACCESS_TIME] => 1385702758.2296
)
[node] => Zend\Stdlib\ArrayObject Object
(
[storage:protected] => Array
(
[storage] => {"30":"lrvp.backend.config.ajaxReboot","29":"lrvp.backend.config.ajaxGetStudio","28":"lrvp.backend.config.ajaxGetAddUserHtml","27":"lrvp.backend.config.ajaxDeleteUser","26":"lrvp.backend.config.ajaxUpdatePassword","25":"lrvp.backend.config.ajaxUpdateUser","24":"lrvp.backend.config.ajaxGetUser","23":"lrvp.backend.config.ajaxAddUser","22":"lrvp.backend.config.ajaxDbInit","21":"lrvp.backend.config.restoreDatabase","20":"lrvp.backend.config.backupDatabase","19":"lrvp.backend.config.upload","18":"lrvp.backend.config.ajaxGetTagList","17":"lrvp.backend.config.ajaxDeleteTag","16":"lrvp.backend.config.ajaxAddTag","15":"lrvp.backend.config.ajaxSetConfig","6":"lrvp.backend.config","33":"lrvp.backend.record.ajaxModeStatus","32":"lrvp.backend.record.ajaxUpdateRecord","31":"lrvp.backend.record.ajaxAddRecord","5":"lrvp.backend.record","14":"lrvp.backend.live.addRecord","4":"lrvp.backend.live","13":"lrvp.backend.video.mp4DownloadList","12":"lrvp.backend.video.ajaxGetRecordVideoPlayInfo","11":"lrvp.backend.video.AjaxVideoUpdate","10":"lrvp.backend.video.deleteComplete","9":"lrvp.backend.video.deleteChkAction","8":"lrvp.backend.video.AjaxPublishUpdate","7":"lrvp.backend.video.create","3":"lrvp.backend.video","2":"lrvp.backend","1":"lrvp"}
)
[flag:protected] => 2
[iteratorClass:protected] => ArrayIterator
[protectedProperties:protected] =>
)
)
上面的结果我在实例化的时候,第一个参数传了node,其他的两个参数默认 ,(如果都不传的,他们都会使用其默认值);
node是一个数组,里面的[storage:protected]又是一个数组,再里面的[storage]这个值就是属性member的默认值
( const MEMBER_DEFAULT = 'storage'; protected $namespace = self::NAMESPACE_DEFAULT;),这个键对应的值是本人传的,值是json串,如果你在实例化的时候传了第二个参数,这里相应的会变化;第三个参数:还没有用过,不大了解,希望了解的可以跟我普及一下,谢谢;
向session写值可以使用下面的方法:
$session->write($content);
这个函数会将
$content作为值,
member属性作为键,存入到session数组的你所申明的命名空间数组(对应结果中的node数组)中,上面贴的结果代码,我的命名空间就是 node
读取session中的:
$session->read();
使用上面的方法基本上可以存取session中的值
$session->read();
Session.php这个文件代码很短,总共才几个方法,还可以去看看其他别的方法,都是些很简单的方法,有时间去看看;