设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
登录
注册
论坛首页
BBS
建站模版
微站设计
虚拟主机
企业邮箱
博客日志
Blog
搜索
搜索
搜索
热搜
长春
优惠
活动
做网站
本版
帖子
用户
本版
帖子
用户
请
登录
后使用快捷导航
没有帐号?
立即注册
道具
勋章
任务
留言板
设置
我的收藏
退出
时时商务社区
»
论坛首页
›
建站资源
›
建站技术
›
Zend Framework入门教程之Zend_Session会话操作详解 ...
返回列表
查看:
1615
|
回复:
0
Zend Framework入门教程之Zend_Session会话操作详解
[复制链接]
wx_pylelnL4
当前离线
积分
7532
2536
主题
2536
帖子
7532
积分
论坛元老
论坛元老, 积分 7532, 距离下一级还需 9992467 积分
论坛元老, 积分 7532, 距离下一级还需 9992467 积分
积分
7532
发消息
电梯直达
楼主
发表于 2018-2-14 05:29:46
|
只看该作者
|
倒序浏览
|
阅读模式
本文实例讲述了Zend Framework入门教程之Zend_Session会话操作。分享给大家供大家参考,具体如下:
会话命名空间
实现会话
代码:
numberOfPageRequests))
{
$myNamespace->numberOfPageRequests++;
}else{
$myNamespace->numberOfPageRequests = 1;
}
echo "用户的浏览次数为:";
echo "
[color=]";
echo $myNamespace->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已经解锁!
点评:
由此可见,锁定并不影响结果的输出。
分析源代码
public function lock()
{
self:
_namespaceLocks[$this->_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;
先执行设置生命期代码,在执行测试代码会看到效果。
第一次:
$b->a内容为:苹果
$b->p内容为:梨
第二次:
$b->a内容为:苹果
$b->p内容为:梨
第三次:
$b->a内容为:
$b->p内容为:梨
第四次:
$b->a内容为:
$b->p内容为:
点评:刷新两次之后,就会有消失。之后陆续消失。超过60秒效果相同。
分析源代码,
public function setExpirationSeconds($seconds, $variables = null)
{
if (parent:
_writable === false) {
/**
* @see Zend_Session_Exception
*/
require_once 'Zend/Session/Exception.php';
throw new Zend_Session_Exception(parent::_THROW_NOT_WRITABLE_MSG);
}
if ($seconds _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来实现的。只是扩展了部分功能。
public function setExpirationHops($hops, $variables = null, $hopCountOnUsageOnly = false)
{
if (parent:
_writable === false) {
/**
* @see Zend_Session_Exception
*/
require_once 'Zend/Session/Exception.php';
throw new Zend_Session_Exception(parent::_THROW_NOT_WRITABLE_MSG);
}
if ($hops _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优秀开发框架总结
》、《
Yii框架入门及常用技巧总结
》、《
ThinkPHP入门教程
》、《
php面向对象程序设计入门教程
》、《
php+mysql数据库操作入门教程
》及《
php常见数据库操作技巧汇总
》
希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。
您可能感兴趣的文章:
工厂模式在Zend Framework中应用介绍
Zend Framework 2.0事件管理器(The EventManager)入门教程
Zend Framework入门知识点小结
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
Zend Framework开发入门经典教程
Zend Framework入门教程之Zend_Db数据库操作详解
Zend Framework入门教程之Zend_Mail用法示例
Zend Framework入门教程之Zend_Config组件用法详解
Zend Framework入门教程之Zend_Registry组件用法详解
Zend Framework入门教程之Zend_View组件用法示例
Zend Framework入门应用实例详解
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
用户反馈
客户端