搜索
系统检测到您的用户名不符合规范:

结合控制器高级特性之参数绑定生成缓存

浏览:1016 发布日期:2013年07月28日 分类:用法示例
什么是控制器高级特性,请参见:
http://www.thinkphp.cn/document/170.html。
什么是S方法,请移步:
http://doc.thinkphp.cn/manual/express_cache.html
-----------------------------------------------------------------------------------

本文主要解决利用控制器高级特性之参数绑定时如何生成缓存。
如何利用此特性,一个很简单的例子,根据ID读取会员资料,大概操作如下:Public function userInfo($id=0){ //默认取值0
if($id){ //ID不为0
$result = M('User')->where(array('id'=>$id))->select(); //实例化User读取结果集
$this->result = $result; //分配至模板
$this->display(); //显示模板
}esle{ //ID为0
$this->error('错误!');
}
}
接下来,将结果生成缓存,大概如下:Public function userInfo($id=0){ //默认取值0
if($id){ //ID不为0

if(!$result = S('user_info')){ //如果没有缓存
$result = M('User')->where(array('id'=>$id))->select(); //实例化User读取结果集
S('user_info',$result,600); //生成缓存,时间10分钟
}

$this->result = $result; //分配至模板
$this->display(); //显示模板
}esle{ //ID为0
$this->error('错误!');
}
}
以上代码完成可以生成缓存,可在Runtime/temp目录查看已生成的文件。
但是,有一个问题,也就是我们是动态传入ID的,如果按以上代码,则在十分钟内即使传入不同的ID,其结果会是一样的。这是不可饶恕的。
所以,有了以下方法:Public function userInfo($id=0){ //默认取值0
if($id){ //ID不为0

if(!$result = S('user_info'.$id)){ //如果没有缓存
$result = M('User')->where(array('id'=>$id))->select(); //实例化User读取结果集
S('user_info'.$id,$result,600); //根据传入ID生成缓存,时间10分钟
}

$this->result = $result; //分配至模板
$this->display(); //显示模板
}esle{ //ID为0
$this->error('错误!');
}
}
通过以上过程,我等新手至少可以明白以下几点:
1、控制器高级特性之参数绑定是如何工作的;
2、S函数的作用;
3、如何结合两者进行简单运用。
如有不妥敬请指正;如有更佳敬请补充,haran将万分感谢!
收藏
haran
积分:16488 等级:LV7
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /