如何让thinkphp在模型中自动完成session赋值小教程


Posted in PHP onSeptember 05, 2014

相信用过thinkphp的用户都知道thinkphp的模型可以完成很多辅助功能,比如自动验证、自动完成等,今天在开发中遇到自动完成中需要获取session值

然后自动赋值的功能,具体看代码;

class ArticlelModel extends Model {
  
  protected $_auto = array ( 
    array('addtime','time',1,'function'),
    array('username','getName',1,'callback')
  );
  
  //这个函数获取session里的name值
  protected function getName(){
    return $_SESSION["name"];
  }
}

这里需要注意最后一个参数function和callback的区别;
function:使用函数,会自动去Common/common.php去寻找对应的函数;
callback:使用在当前模型中定义的回调方法

Session 用于Session 设置、获取、删除和管理操作
用法 session($name, $value='')
参数 name(必须):如果传入数组 则表示进行session初始化,如果传入null表示清空当前session,如果是字符串则表示session赋值、获取或者操作。 Value(可选):要设置的session值,如果传入null表示删除session,默认为空字符串
返回值 见详(根据具体的用法返回不同的值)

session函数是一个多元化操作函数,传入不同的参数调用可以完成不同的功能操作,包括下面一些功能。[-more-]
session初始化设置
如果session方法的name参数传入数组则表示进行session初始化设置,例如:
session(array('name'=>'session_id','expire'=>3600));

支持传入的session参数包括:

参数名 说明
id session_id值
name session_name 值
path session_save_path 值
prefix session 本地化空间前缀
expire session.gc_maxlifetime 设置值
domain session.cookie_domain 设置值
use_cookies session.use_cookies 设置值
use_trans_sid session.use_trans_sid 设置值
cache_limiter session_cache_limiter设置值
cache_expire session_cache_expire设置值
type session hander类型,可以使用hander驱动扩展

Session初始化设置方法 无需手动调用,在App类的初始化工作结束后会自动调用,通常项目只需要配置SESSION_OPTIONS参数即可,SESSION_OPTIONS参数的设置是一个数组,支持的索引名和前面的session初始化参数相同。

默认情况下,初始化之后系统会自动启动session,如果不希望系统自动启动session的话,可以设置SESSION_AUTO_START为false,例如:

'SESSION_AUTO_START' =>false

关闭自动启动后可以项目的公共文件或者在控制器中通过手动调用session_start或者session('[start]') 启动session。
session赋值
Session赋值比较简单,直接使用:

session('name','value'); //设置session

相当于:

$_SESSION['name'] = 'value';

session取值

Session取值使用:
$value = session('name');

相当于使用:
$value = $_SESSION['name'];

session删除

session('name',null); // 删除name

相当于:
unset($_SESSION['name']);

要删除所有的session,可以使用:
session(null); // 清空当前的session

相当于:
$_SESSION = array();

session判断
要判断一个session值是否已经设置,可以使用
session('?name');

用于判断名称为name的session值是否已经设置
相当于:
isset($_SESSION['name']);

session管理
session方法支持一些简单的session管理操作,用法如下:
session('[操作名]');

支持的操作名包括:

操作名 含义
start 启动session
pause 暂停session写入
destroy 销毁session
regenerate 重新生成session id

使用示例如下:
session('[pause]'); // 暂停session写入
session('[start]'); // 启动session
session('[destroy]'); // 销毁session
session('[regenerate]'); // 重新生成session id

本地化支持

如果在初始化session设置的时候传入prefix参数或者单独设置了SESSION_PREFIX参数的话,就可以启用本地化session管理支持。启动本地化session后,所有的赋值、取值、删除以及判断操作都会自动支持本地化session。

本地化session支持开启后,生成的session数据格式由原来的
$_SESSION['name'] 变成 $_SESSION['前缀']['name']

假设前缀设置为think,则赋值操作:
session('name','value');  //设置session

相当于:
$_SESSION['think']['name'] = 'value';

取值操作:
$value = session('name');

相当于使用:
$value = $_SESSION['think']['name'];

删除操作:
session('name',null);

相当于:
unset($_SESSION['think']['name']);

清空操作:
session(null);

相当于:
unset($_SESSION['think']);

判断操作:
session('?name');

相当于:
isset($_SESSION['think']['name']);

PHP 相关文章推荐
PHP的栏目导航程序
Oct 09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
Jun 25 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
thinkPHP中分页用法实例分析
Dec 26 PHP
PHP错误机制知识汇总
Mar 24 PHP
thinkphp分页实现效果
Oct 13 PHP
PHP实现的数独求解问题示例
Apr 18 PHP
PHP中trait使用方法详细介绍
May 21 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
Jul 03 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
Sep 04 #PHP
Chrome Web App开发小结
Sep 04 #PHP
Yii查询生成器(Query Builder)用法实例教程
Sep 04 #PHP
php设计模式之简单工厂模式详解
Sep 04 #PHP
Laravel框架表单验证详解
Sep 04 #PHP
Laravel框架中扩展函数、扩展自定义类的方法
Sep 04 #PHP
深入分析PHP引用(&)
Sep 04 #PHP
You might like
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
php中strtotime函数用法详解
2014/11/15 PHP
浅析iis7.5安装配置php环境
2015/05/10 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
js获取当月最后一天实例代码
2013/11/19 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
详解package.json版本号规则
2019/08/01 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
室内设计自我鉴定
2013/10/15 职场文书
建筑人员岗位职责
2013/12/25 职场文书
大学生先进事迹材料
2014/02/16 职场文书
人才市场接收函
2015/01/30 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
预备党员入党感言
2015/08/01 职场文书
珍爱生命主题班会
2015/08/13 职场文书
初中班长竞选稿
2015/11/20 职场文书
运动会班级口号霸气押韵
2015/12/24 职场文书
导游词之神仙居景区
2019/11/15 职场文书
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript