如何让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面向对象编程快速入门
Dec 14 PHP
PHP分页函数代码(简单实用型)
Dec 02 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
php IP转换整形(ip2long)的详解
Jun 06 PHP
php抽奖小程序的实现代码
Jun 18 PHP
学习php设计模式 php实现访问者模式(Visitor)
Dec 07 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
May 13 PHP
PHP与Java对比学习日期时间函数
Jul 03 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
PHP bin2hex()函数基础实例讲解
Feb 11 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
Javascript验证Visa和MasterCard信用卡号的方法
2015/07/27 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python实现针对中文排序的方法
2017/05/09 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
详解Python装饰器
2019/03/25 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
如何通过jdbc调用存储过程
2012/04/19 面试题
高中军训广播稿
2014/01/14 职场文书
秋季运动会广播稿
2014/02/22 职场文书
购房协议书范本
2014/04/11 职场文书
大雁塔英文导游词
2015/02/10 职场文书
学校捐款活动总结
2015/05/09 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
幼儿园教师辞职信
2019/06/21 职场文书
Python绘画好看的星空图
2022/03/17 Python