Zend Framework入门教程之Zend_Session会话操作详解
本文实例讲述了Zend Framework入门教程之Zend_Session会话操作。分享给大家供大家参考,具体如下: 会话命名空间实现会话代码: numberOfPageRequests))
{
$myNamespace->numberOfPageRequests++;
}else{
$myNamespace->numberOfPageRequests = 1;
}
echo "用户的浏览次数为:";
echo "numberOfPageRequests;
echo "次";
结果: 用户的浏览次数为:10次 遍历会话命名空间代码: webhost = "127.0.0.1";
$myNamespace->hostname = "localhost";
$myNamespace->user = "root";
$myNamespace->password = "123456";
$myNamespace->db_name = "test";
$myNamespace->db_type = "Sqlite";
foreach($myNamespace as $index=>$value){
echo "命名空间myNamespace中的:".$index;
echo "为".$value." n"; } 结果: 命名空间myNamespace中的:webhost为127.0.0.1 命名空间myNamespace中的:hostname为localhost 命名空间myNamespace中的:user为root 命名空间myNamespace中的:password为123456 命名空间myNamespace中的:db_name为test 命名空间myNamespace中的:db_type为Sqlite 点评: 它会把这个对象所对应空间中的所有内容遍历出来。很神奇。 访问会话命名空间代码: user = "Administrator";
if(isset($login->user)){
echo "$login->user已经有值,其值为:";
echo $login->user;
unset($login->user);
}else{
echo "$login->user无值";
}
echo " "; if(isset($login->pass)){ echo "$login->pass已经有值,其值为:"; echo $login->pass; unset($login->pass); }else{ echo "$login->pass无值"; } foreach($login as $index=>$value){ echo "命名空间login中的:".$index."为".$value." n"; } 结果: $login->user已经有值,其值为:Administrator $login->pass无值 会话的高级应用开启会话,有两种方法 一、使用Zend_Session::start()开启会话 二、new Zend_Session_Namespace() 锁定会话命名空间 代码: name = "玉皇大帝";
$test->sex = "男";
$test->lock();
if($test->isLocked()){
echo "会话$test已经锁定! "; echo "命名空间$test中的成员name的值为:"; echo $test->name; }else{ echo "会话$test已经解锁!"; } echo " "; $test->unLock(); if($test->isLocked()){ echo "会话$test已经锁定! "; echo "命名空间$test中的成员name的值为:"; echo $test->name; }else{ echo "会话$test已经解锁!"; } 结果: 会话$test已经锁定! 命名空间$test中的成员name的值为:玉皇大帝 会话$test已经解锁! 点评: 由此可见,锁定并不影响结果的输出。 分析源代码 _namespace] = true; } /** * unlock() - unmark a session/namespace to enable read & write * * @return void */ public function unlock() { unset(self::$_namespaceLocks[$this->_namespace]); } /** * unlockAll() - unmark all session/namespaces to enable read & write * * @return void */ public static function unlockAll() { self::$_namespaceLocks = array(); } /** * isLocked() - return lock status,true if,and only if,read-only * * @return bool */ public function isLocked() { return isset(self::$_namespaceLocks[$this->_namespace]); }可知,它只是改变了参数而已。 为会话设置生命周期setExpirationSeconds()方法与setExpirationHops()两种方法来设置。 代码: a = "苹果";
$s->p = "梨";
$s->o = "桔子";
$s->setExpirationSeconds(60);
$s->setExpirationHops(2,'a');
$s->setExpirationHops(3,'p');
echo "已经为命名空间$s设置生命期 "; 设置生命期代码,其实它针对的是命名空间来设置的。 测试代码: a内容为:".$b->a;
echo " "; echo "$b->p内容为:".$b->p; 先执行设置生命期代码,在执行测试代码会看到效果。 a内容为:苹果 $b->p内容为:梨 第二次: $b->a内容为:苹果 $b->p内容为:梨 第三次: $b->a内容为: $b->p内容为:梨 第四次: $b->a内容为: $b->p内容为: 点评:刷新两次之后,就会有消失。之后陆续消失。超过60秒效果相同。 分析源代码, _namespace]['ENT'] = time() + $seconds;
} else {
if (is_string($variables)) {
$variables = array($variables);
}
foreach ($variables as $variable) {
if (!empty($variable)) {
$_SESSION['__ZF'][$this->_namespace]['ENVT'][$variable] = time() + $seconds;
}
}
}
}
其实它还是基于PHP原始的Session来实现的。只是扩展了部分功能。 _namespace]['ENGH'] = $hops;
} else {
$_SESSION['__ZF'][$this->_namespace]['ENNH'] = $hops;
}
} else {
if (is_string($variables)) {
$variables = array($variables);
}
foreach ($variables as $variable) {
if (!empty($variable)) {
if ($hopCountOnUsageOnly === false) {
$_SESSION['__ZF'][$this->_namespace]['ENVGH'][$variable] = $hops;
} else {
$_SESSION['__ZF'][$this->_namespace]['ENVNH'][$variable] = $hops;
}
}
}
}
}
处理放在了构造函数中。 更多关于zend相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》 希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。 (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |