thinkphp模型中的获取器和修改器如何使用

获取器用于读取时格式化数据,如时间戳转日期;修改器用于写入前处理数据,如密码加密。

thinkphp模型中的获取器和修改器如何使用

在ThinkPHP模型中,获取器(get)和修改器(set)是用于对数据进行处理的两个重要功能。它们可以在数据读取或写入时自动触发,常用于格式转换、加密解密、时间处理等场景。

什么是获取器和修改器

获取器(getter):在从数据库读取数据后,对某个字段的值进行加工后再返回。比如将时间戳转为日期格式。

修改器(setter):在保存数据到数据库前,对字段值进行处理。比如将密码加密后再存储。

定义获取器:get方法

注意:字段名需使用驼峰法命名,即使数据库是下划线命名。

例如数据库字段为 create_time,在模型中应写成 getCreateTimeAttr

立即学习“PHP免费学习笔记(深入)”;

class User extends Model{    // 将时间戳格式化为 Y-m-d H:i:s    public function getCreateTimeAttr($value)    {        return date('Y-m-d H:i:s', $value);    }    // 对性别字段做中文映射    public function getSexAttr($value)    {        $sex = [0 => '未知', 1 => '男', 2 => '女'];        return $sex[$value] ?? '未知';    }}

调用时直接访问属性即可触发:

$user->create_time; // 自动格式化输出

定义修改器:set方法

修改器用于在数据写入前处理,方法名为 set字段名Attr

class User extends Model{    // 密码自动加密    public function setPasswordAttr($value)    {        return md5($value); // 建议使用更安全的方式如password_hash    }    // 名称统一转为小写    public function setNameAttr($value)    {        return strtolower($value);    }    // 时间字段自动转为时间戳    public function setUpdateTimeAttr()    {        return time();    }}

使用时无需手动调用:

$user = new User;$user->name = 'Alice';$user->password = '123456';$user->save(); // 保存时自动加密密码、转小写等

配合类型转换使用

如果字段需要自动转换类型,可结合模型的 $type 属性使用:

class User extends Model{    protected $type = [        'create_time' => 'timestamp:Y-m-d H:i:s',        'info'        => 'json'    ];}

这样即使不写获取器,时间或JSON字段也会自动处理。但自定义获取器优先级更高。

基本上就这些。合理使用获取器和修改器,可以让模型层更干净,避免在控制器中重复处理数据逻辑。注意命名规范和数据安全,尤其是加密类操作。

以上就是thinkphp模型中的获取器和修改器如何使用的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/270369.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月4日 11:59:45
下一篇 2025年11月4日 12:04:36

相关推荐

  • AO3镜像站备用镜像网址_AO3镜像站快速访问官网

    AO3镜像站备用网址包括ao3mirror.com和xiaozhan.icu,当主站archiveofourown.org无法访问时可切换使用,二者均同步更新内容并支持多语言检索与离线下载功能。 AO3镜像站备用镜像网址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来AO3镜像站快速访问官…

    2025年12月6日 软件教程
    000
  • Pboot插件缓存机制的详细解析_Pboot插件缓存清理的命令操作

    插件功能异常或页面显示陈旧内容可能是缓存未更新所致。PbootCMS通过/runtime/cache/与/runtime/temp/目录缓存插件配置、模板解析结果和数据库查询数据,提升性能但影响调试。解决方法包括:1. 手动删除上述目录下所有文件;2. 后台进入“系统工具”-“缓存管理”,勾选插件、…

    2025年12月6日 软件教程
    000
  • Word2013如何插入SmartArt图形_Word2013SmartArt插入的视觉表达

    答案:可通过四种方法在Word 2013中插入SmartArt图形。一、使用“插入”选项卡中的“SmartArt”按钮,选择所需类型并插入;二、从快速样式库中选择常用模板如组织结构图直接应用;三、复制已有SmartArt图形到目标文档后调整内容与格式;四、将带项目符号的文本选中后右键转换为Smart…

    2025年12月6日 软件教程
    000
  • 怎样用免费工具美化PPT_免费美化PPT的实用方法分享

    利用KIMI智能助手可免费将PPT美化为科技感风格,但需核对文字准确性;2. 天工AI擅长优化内容结构,提升逻辑性,适合高质量内容需求;3. SlidesAI支持语音输入与自动排版,操作便捷,利于紧急场景;4. Prezo提供多种模板,自动生成图文并茂幻灯片,适合学生与初创团队。 如果您有一份内容完…

    2025年12月6日 软件教程
    000
  • word表格怎么调整行高_word表格行高调整的具体操作

    手动拖动可快速调整单行行高;2. 通过表格属性精确设置指定高度,选择固定值或最小值模式;3. 全选表格批量统一行高;4. 设为自动或最小值使行高随内容自适应,确保文字显示完整。 在使用Word制作表格时,调整行高是常见的排版需求。合理的行高能让表格内容更清晰易读。下面介绍几种常用的调整Word表格行…

    2025年12月6日 软件教程
    000
  • Linux journalctl与systemctl status结合分析

    先看 systemctl status 确认服务状态,再用 journalctl 查看详细日志。例如 nginx 启动失败时,systemctl status 显示 Active: failed,journalctl -u nginx 发现端口 80 被占用,结合两者可快速定位问题根源。 在 Lin…

    2025年12月6日 运维
    000
  • Pboot插件数据库连接的配置教程_Pboot插件数据库备份的自动化脚本

    首先配置PbootCMS数据库连接参数,确保插件正常访问;接着创建auto_backup.php脚本实现备份功能;然后通过Windows任务计划程序或Linux Cron定时执行该脚本,完成自动化备份流程。 如果您正在开发或维护一个基于PbootCMS的网站,并希望实现插件对数据库的连接配置以及自动…

    2025年12月6日 软件教程
    000
  • Linux命令行中wc命令的实用技巧

    wc命令可统计文件的行数、单词数、字符数和字节数,常用-l统计行数,如wc -l /etc/passwd查看用户数量;结合grep可分析日志,如grep “error” logfile.txt | wc -l统计错误行数;-w统计单词数,-m统计字符数(含空格换行),-c统计…

    2025年12月6日 运维
    000
  • 今日头条官方主页入口 今日头条平台直达网址官方链接

    今日头条官方主页入口是www.toutiao.com,该平台通过个性化信息流推送图文、短视频等内容,具备分类导航、便捷搜索及跨设备同步功能。 今日头条官方主页入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来今日头条平台直达网址官方链接,感兴趣的网友一起随小编来瞧瞧吧! www.tout…

    2025年12月6日 软件教程
    000
  • Linux密码策略如何配置_Linux密码策略配置的详细指南

    答案:Linux密码策略通过PAM模块和配置文件设置密码复杂度、有效期、重复使用限制及账户锁定规则,提升系统安全。具体包括:1. 配置pam_pwquality.so实现最小长度8位、含大小写字母、数字、特殊字符,允许输错3次;2. 修改/etc/login.defs设置密码最长使用90天、最短7天…

    2025年12月6日 运维
    000
  • VSCode代码:智能提示与补全优化

    合理配置语言服务器、扩展与编辑器设置可显著提升VSCode智能提示效率。首先确保启用内置IntelliSense并安装对应语言扩展(如Pylance、IntelliCode),通过jsconfig.json/tsconfig.json优化路径识别;其次开启typescript.suggest.pat…

    2025年12月6日 开发工具
    000
  • 小猿搜题官方在线搜题网址_小猿搜题搜题平台网页版直达

    小猿搜题官方在线搜题网址是https://www.yuansouti.com/,提供小学至高中全科题目解析,支持拍照、文字及语音搜题,配备错题本、知识点分析与微课视频,实现多端同步与家长监控,提升学习效率。 小猿搜题官方在线搜题网址在哪里?这是不少学生和家长都关注的,接下来由PHP小编为大家带来小猿…

    2025年12月6日 软件教程
    000
  • 怎么在VSCode里管理多个项目?

    使用多根工作区可高效管理多个项目,通过“添加文件夹到工作区”整合项目并保存为.code-workspace文件,实现一键恢复;各项目可在其.vscode/settings.json中配置独立设置,工作区级设置优先于全局但低于文件夹级;利用资源管理器和Ctrl+P快速导航与搜索;每个项目可定义独立的l…

    2025年12月6日 开发工具
    000
  • Vue.js应用中配置环境变量:灵活管理后端通信地址

    在%ignore_a_1%应用中,灵活配置后端api地址等参数是开发与部署的关键。本文将详细介绍两种主要的环境变量配置方法:推荐使用的`.env`文件,以及通过`cross-env`库在命令行中设置环境变量。通过这些方法,开发者可以轻松实现开发、测试、生产等不同环境下配置的动态切换,提高应用的可维护…

    2025年12月6日 web前端
    000
  • Pboot插件前端交互的JavaScript集成_Pboot插件JS插件的加载技巧

    正确集成JavaScript需采用内联引入、外部文件异步加载、动态注入脚本及AJAX通信四种方式,确保Pboot插件前端交互正常执行。 如果您正在开发Pboot系统的插件,并希望在前端实现动态交互功能,那么正确集成JavaScript代码至关重要。由于Pboot模板引擎的特性,直接嵌入JS可能无法达…

    2025年12月6日 软件教程
    000
  • JavaScript响应式编程与Observable

    Observable是响应式编程中处理异步数据流的核心概念,它允许随时间推移发出多个值,支持订阅、操作符链式调用及统一错误处理,广泛应用于事件监听、状态管理和复杂异步逻辑,提升代码可维护性与可读性。 响应式编程是一种面向数据流和变化传播的编程范式。在前端开发中,尤其面对复杂的用户交互和异步操作时,J…

    2025年12月6日 web前端
    000
  • 环境搭建docker环境下如何快速部署mysql集群

    使用Docker Compose部署MySQL主从集群,通过配置文件设置server-id和binlog,编写docker-compose.yml定义主从服务并组网,启动后创建复制用户并配置主从连接,最后验证数据同步是否正常。 在Docker环境下快速部署MySQL集群,关键在于合理使用Docker…

    2025年12月6日 数据库
    000
  • 处理动态表单数据:PHP 接收和存储学生成绩

    本文档旨在提供一种清晰有效的方法,用于处理通过 JavaScript 动态生成的表单数据,并将其存储到 PHP 后端数据库中。我们将重点解决如何为动态生成的表单元素创建唯一的名称,以便在 PHP 中正确地访问和处理这些数据。通过修改 HTML结构和JavaScript代码,确保数据能够以结构化的方式…

    2025年12月6日 web前端
    000
  • Laravel多态关联?多态关系怎样使用?

    多态关联解决了一个模型需关联多种父模型时的冗余问题,通过commentable_id和commentable_type字段实现灵活扩展,避免多外键带来的结构混乱与维护难题。 Laravel的多态关联,简单来说,就是让一个模型能够同时属于多个不同类型的模型。想象一下,你有一个评论(Comment)模型…

    2025年12月6日 PHP框架
    000
  • VSCode代码折叠区域定制方法

    VSCode支持通过#region和#endregion注释手动定义代码折叠区域,如JavaScript中使用//#region 工具函数与//#endregion包裹代码,实现可展开收起的逻辑块,提升长文件可读性。 VSCode 支持通过特定语法手动定义代码折叠区域,这对长段逻辑或想自定义组织代码…

    2025年12月6日 开发工具
    000

发表回复

登录后才能评论
关注微信