> php教程 > php手册 > 结合控制器高级特性之参数绑定生成缓存

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

WBOY
풀어 주다: 2016-06-07 11:44:25
원래의
1077명이 탐색했습니다.

什么是控制器高级特性,请参见:
http://www.thinkphp.cn/document/170.html。
什么是S方法,请移步:
http://doc.thinkphp.cn/manual/express_cache.html
-----------------------------------------------------------------------------------

本文主要解决利用控制器高级特性之参数绑定时如何生成缓存。
如何利用此特性,一个很简单的例子,根据ID读取会员资料,大概操作如下:Public function userInfo($id=0){ //默认取值0<br>     if($id){ //ID不为0<br>         $result = M('User')->where(array('id'=>$id))->select(); //实例化User读取结果集<br>         $this->result = $result; //分配至模板<br>         $this->display(); //显示模板<br>     }esle{ //ID为0<br>         $this->error('错误!');<br>     }<br> }接下来,将结果生成缓存,大概如下:Public function userInfo($id=0){ //默认取值0<br>     if($id){ //ID不为0<br> <br>         if(!$result = S('user_info')){ //如果没有缓存<br>             $result = M('User')->where(array('id'=>$id))->select(); //实例化User读取结果集<br>             S('user_info',$result,600); //生成缓存,时间10分钟<br>         }<br> <br>         $this->result = $result; //分配至模板<br>         $this->display(); //显示模板<br>     }esle{ //ID为0<br>         $this->error('错误!');<br>     }<br> }以上代码完成可以生成缓存,可在Runtime/temp目录查看已生成的文件。
但是,有一个问题,也就是我们是动态传入ID的,如果按以上代码,则在十分钟内即使传入不同的ID,其结果会是一样的。这是不可饶恕的。
所以,有了以下方法:Public function userInfo($id=0){ //默认取值0<br>     if($id){ //ID不为0<br> <br>         if(!$result = S('user_info'.$id)){ //如果没有缓存<br>             $result = M('User')->where(array('id'=>$id))->select(); //实例化User读取结果集<br>             S('user_info'.$id,$result,600); //根据传入ID生成缓存,时间10分钟<br>         }<br> <br>         $this->result = $result; //分配至模板<br>         $this->display(); //显示模板<br>     }esle{ //ID为0<br>         $this->error('错误!');<br>     }<br> }通过以上过程,我等新手至少可以明白以下几点:
1、控制器高级特性之参数绑定是如何工作的;
2、S函数的作用;
3、如何结合两者进行简单运用。
如有不妥敬请指正;如有更佳敬请补充,haran将万分感谢!

AD:真正免费,域名+虚机+企业邮箱=0元

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿