php 数据库访问类(模型 Model) v1.1

Thinkphp框架 作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。 阅读详情

# 规范

使用模型封装所有数据库操作(读和写),模型使用类(class)的形式进行定义。
除模型外,禁止通过 $db 类直接访问数据库。

一个模块的模型放在 model/ 目录内。模型以数据表作为粒度,则一个模型原则上只负责一个表的操作,模型又按操作类型分成读与写两类。

操作类型体现在命名前序上,使用 r_ 表示读, w_ 表示写。类名与源代码文件名都使用前序进行分类。

模型类名及文件名的命名主要参考数据表名,并去除表名中共同有的前序。

如:

数据库中有一数据表:phpcms2008_selepro_projectinfo
属于 selepro 模块的数据表,因此 phpcms2008_selepro_ 皆为表前序,表名中有意义的部份是 projectinfo 。
所以,模型定义如下:

model/r_projectinfo.class.php
model/w_projectinfo.class.php

r_projectinfo.class.php 为封装了对 projectinfo 表读操作的模型,类名为 r_selepro_projectinfo ,可见,类名需要加上模块名(selepro)作为前序。

w_projectinfo.class.php 为封装了对 projectinfo 表写操作的模型,类名为 w_selepro_projectinfo 。

# 加载


模型类使用 loadm() 函数加载及实例化,不在控制器中直接包含及 new 。
loadm 调用方法是:loadm('mod_name', 'model_file_name')。
eg. loadm('phpcms', 'r_projectinfo')
第一个参数为模型所属模块名,第二个参数为模型类定义文件名(不含 .class.php 部份)。
两个参数都使用单引号定义的字符串,分隔参数的逗号后跟一个空格,在需要查找某个模型被哪些地方调用时可以方便地查找出来。
否则调用格式不统一,无法通过简单的字符串搜索把一个模型的调用位置找出来。

# 实例变量名


读类型的模型使用 omr_ 前序,写类型的用 omw_ 前序。其中 o(obj)m(model)r(read)。
后跟模块名的前三个字母,再跟模型文件名各部份的前三个字母:
eg.
/selepro/model/r_projectinfo.class.php -> $omr_sel_pro
(其中 omr_ 为前序,sel 为模块名,pro 为模型文件名)
/selepro/model/w_material_info.class.php -> $omw_sel_mat_inf
完整的实例化语句为:
$omw_sel_mat_inf = loadm('selepro', 'w_material_info');
统一实例变量名后,当需要查找一个模型在哪些地方被使用到,一个模型的一个方法在哪些地方被调用时,可以通过简单的字符串搜索把调用位置找出来。

# 作用


把原本写得到处都是的数据库访问代码集中到一块,可以在一定程度上提高代码质量。
以团队的角度来说,因为所有数据库访问代码都住中到了一块,可以更方便地管理。
又因为数据库查询语句都是集中在一块,在需要对数据库进行优行分析将更方便,不需要在源代码的各处找各条查询语句。

yaf打造自己的api接口框架(细说model) 上一篇文章中我们一起研究学习了yaf的简单工作流程与控制器以及视图部分,然后在视图模板中打印输出了:hello,Controller!,也就是通过输出hello,Controller!的例子,我们把MVC中的,C与V过了一遍。还有M我们没有详细学习,那么今天我们一起来研究学习一下M吧,那么现在就开始吧。我眼中的MVC在开始之前,我想和大家一起聊聊我所认识的mvc三层架构。mvc这个概念在互联网上众... 阅读详情

相关推荐

PHP打造Modoer点评系统实战项目GBK版

本文还有配套的精品资源,点击获取 简介:本项目GBK版本涉及核心知识点包括PHP编程基础、MySQL数据库、MVC设计模式、session与cookie应用、系统安全性、错误处理与调试、GBK编码、用户界面设计、API集成和系统维护升级。通过开发Modoer点评系统,学习者将掌握构建动态网站、处理用户输入、数据库交互以及提升用户交互体验的技能,同时理解如何管理项目安全性和执...

weixin_42576186的博客 791

php mysql pdo 封装类_PHP封装的数据库模型Model类完整示例【基于PDO】

本文实例讲述了PHP封装的数据库模型Model类。分享给大家供大家参考,具体如下://引入配置文件include "../Config/config.php";class Model extends PDO{protected $tableName = "";//存储表名protected $sql = "";//存储最后执行的SQL语句protected $limit = "";//存储limi...

weixin_30698775的博客 351

PHP模型Model类封装数据库操作示例

主要介绍了PHP模型Model类封装数据库操作,结合实例形式分析了php使用mysqli封装的针对数据库操作相关实现与使用技巧,需要的朋友可以参考下

mysql最早出现的数据模型_常用的数据模型有哪些?特点是什么?

科技趣报道2019-09-19 16:59:36目前最常用的三种数据模型为层次模型、网状模型和关系模型。一、层次模型层次模型将数据组织成一对多关系的结构,层次结构采用关键字来访问其中每一层次的每一部分。优点是存取方便且速度快;结构清晰,容易理解;数据修改和数据库扩展容易实现;检索关键属性十分方便。二、网状模型网状模型用连接指令或指针来确定数据间的显式连接关系,是具有多对多类型的数据组织方式。优点是...

weixin_39664585的博客 1332

Unity手游优化实战:用GPU Instancing把草地渲染的DrawCall从8000降到20(附完整Shader)

本文详细介绍了Unity手游中利用GPU Instancing技术优化草地渲染的实战方法,将DrawCall从8000降至20。通过Shader改造和性能优化技巧,开发者可以在移动端实现高效渲染,显著提升游戏性能。文章包含完整的Shader代码和优化策略,适合Unity开发者学习应用。

weixin_33691817的博客 489

Anthropic发布10款金融AI智能体模板深度解析:重构华尔街工作范式

摘要:2026年5月,Anthropic发布10款金融AI智能体模板,标志着AI从辅助工具升级为"虚拟同事"。这些智能体深度集成到Word、Excel等办公软件中,覆盖投行、商行、资管三大场景的核心工作流,预计可提升效率35-85%。技术架构基于Claude3.5Sonnet模型,具备200K上下文窗口和95%+的财务图表解析准确率,并与彭博等金融数据源直连。发布引发传统金融数据服务商股价下跌,摩根大通等机构则视其为成本优化工具。落地需分四阶段推进,关键在于数据治理和复合型人才培养。未来

yyq916的博客 634

php中model怎么写,thinkphp 中自定义model步骤

最近想用thinkPHP了,这也是听同事说的,说他比较简单,拿过来试一下,看了一遍文档,比较详细。后来继续用,便遇到了这个问题:在model中添加方法,因为很多和model相关的方法用的次数多,而且应该属于model‘管辖’,所以应该写在model类里面。按照惯例建好Model和Controller(我用的3.2),然后在Controller的某个function里面调用。下面上代码:use Th...

weixin_35410644的博客 691

Ollama部署本地大模型详细教程

创建ModelfilePARAMETER num_gpu 50 # GPU 层卸载比例(0~100)场景是否推荐本地开发/测试 Agent✅ 强烈推荐内部知识库问答(RAG)✅ 推荐(配合 Pgvector)生产环境高并发服务⚠️ 谨慎(建议评估 vLLM / Triton)需要 Function Calling 的 Agent❌ 不推荐(改用 DashScope API)🔑核心价值Ollama 是“本地大模型的 Docker”——让开源模型像容器一样 easy to run。

我们的征途是星辰大海 2616

程序员必看之ThinkPHP5中model与Db的区别

作者:黑马程序员链接:https://zhuanlan.zhihu.com/p/58641972来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。在ThinkPHP5的使用过程中,很多使用者刚接触到数据库操作时,不能很好调用相关的方法进行数据库的交互。下面就分享一下ThinkPHP5中Db与模型的区别关于db与model的选择使用DB方式是直接获取到的query类(Th...

cpongo011702 2603

【DAB收音机】DAB 认证介绍

DAB 认证ESTI 标准文档: ETSI 103461实际过认证时,需要根据产品的受众国家及区域,参考当地官方是否有国内认证协议。需要参考当地文档进行功能开发。例如:阿联酋地区用《UAE.S 5021 _ 2018.pdf》标准进行认证。ESTI 的DAB认证协议规定了家用和车载数字无线电的最低要求,及其对应的测试方法,是数字无线电认证标志规定的技术基础。本文以车载数字无线电接收器为例,进行部分DAB认证的介绍,详情请见官方文档。或联系博主获取DAB ESTI 103461的中文翻译资料。

qq_15271231的博客 1219

告别理论!用AXI-Stream实战摄像头数据流采集(附Verilog关键代码片段)

本文详细解析了如何通过AXI-Stream接口实现工业级可靠性的摄像头数据流采集系统,重点介绍了Verilog实战代码、AXI-Stream握手机制及数据反压处理方案。通过三级缓冲架构和带宽优化,有效解决了OV5640等摄像头在高速场景下的帧丢失问题,为FPGA图像处理项目提供了实用解决方案。

weixin_42563415的博客 157

phpcms v9二次开发之数据模型类

系统模型类:model.class.php 数据模型类的位置:/phpcms/libs/classes        phpcms v9二次开发中,我们要经常需要对模块的数据表进行查询、添加、修改和删除数据等操作,所有这些操作都离不开数据模型类model.class.php,它起到开发者与数据表的交互作用。model.class.php里面封装了许多数据表操作的方法,基本上常用的mysql

didige2008的专栏 708

Android WIFI体系:深入解析WifiLock与MulticastLock的底层实现与性能优化

本文深入解析Android WIFI体系中WifiLock与MulticastLock的底层实现机制与性能优化策略。WifiLock通过阻止Wi-Fi休眠提升网络性能,尤其WIFI_MODE_FULL_HIGH_PERF模式可显著降低延迟;MulticastLock则控制组播数据接收,但会增加功耗。文章详细探讨了其与wpa_supplicant、HAL层的交互,并提供高性能场景下的优化实践与功耗平衡方案。

php55的博客 1079

phpcms image.class.php,【phpcms-v9】model.class.php文件分析-数据模型的基类

/*** model.class.php 数据模型基类** @copyright(C) 2005-2010 PHPCMS* @licensehttp://www.phpcms.cn/license/* @lastmodify2010-6-7*///路径:phpcms/libs/classes/model.class.php数据模型基类,所有的phpcms/model/文件夹下的所有model类都...

weixin_35510630的博客 151

微信小程序 - {“errMsg”:”requestPayment:fail banned”} 微信小程序调用wx.requestPayment支付失败返回错误(uniapp微信小程序微信支付报错)

{“errMsg”:”requestPayment:fail banned”},微信小程序调用wx.requestPayment报错requestPayment:fail banned,uni-app微信小程序wx.requestPayment支付报错requestPayment:fail banned,拉起小程序支付报错,iPhone苹果ios真机微信支付报错,Android安卓手机微信支付报错,支付报错,商户配置,签名验证,uniapp 小程序支付微信支付一场,设置过b2b类目,确认了商户号相关功能正常

🏆 前端领域优质创作者 3340

家用智能监控摄像机如何使用NAS进行存储/备份(小米智能摄像机如何解决群晖 / 飞牛 NAS 识别失败、文件目录不显示问题)

小米摄像头NAS存储总出问题?🤯 别慌!本文揭秘NAS底层逻辑,群晖、飞牛实战指南。手把手教你排查解决所有难题,轻松搞定监控录像安全备份!🔒

XiaoqiangClub的博客 2694

php yii2提示Database Exception – yii\db\Exception错误

参照YII2 advanced 高级版本项目搭建-添加API应用以及多应用中的方法创建了一个新的api应用,其中便自带gii工具。 但在yii2的gii工具中点Model Generator的Start来创建model时发现错误 提示: Database Exception – yii\db\ExceptionSQLSTATE[HY000] [2002] No such file or dir

peyogoat的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

phpcmsv9源码学习:数据库model、foreground类

在PHPCMS二次开发中,PHP页面的代码

听海Movie的专栏 1264

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

php数据模型之资源类型,【phpcms-v9】model.class.php文件分析-数据模型的基类

/*** model.class.php 数据模型基类** @copyright(C) 2005-2010 PHPCMS* @licensehttp://www.phpcms.cn/license/* @lastmodify2010-6-7*///路径:phpcms/libs/classes/model.class.php数据模型基类,所有的phpcms/model/文件夹下的所有model类都...

weixin_35918734的博客 214

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

php+控制器+数据库,Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法_PHP...

本文实例讲述了Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法。分享给大家供大家参考,具体如下:前言:laravel创建数据库,实际可以手动创建,如古老的phpmyadmin 等均可以。一、数据库连接:在根目录(laravel5.1下面有个.env文件,如果没有则会有个.env.example然后将此文件修改成.env文件即可)打开文件:找到:DB_HOST=127.0...

weixin_29370183的博客 237

【phpcms-v9】model.class.php文件分析-数据模型的基类

[html] view plain copy  print? php    /**    *  model.class.php 数据模型基类    *    * @copyright           (C) 2005-2010 PHPCMS    * @license             http://www.phpcms.cn/license/  

Nikloas 705

ThinkPHP学习笔记(四)模型与数据库

继《 ThinkPHP学习笔记(三)输出》,上一篇描述了C如何传递数据到V,其中C传递是静态数据 $name='lizhongfu'; $this->assign('data',$name);,但实际中$name需要根据情况动态而定的,于需要从数据库获$name的值,而数据是MVC中M层,那C如何从M获取数据? 1、建立数据库db_thphp及数据表tp_use

阿福的专栏 2007

php 实现 model层,Thinkhphp5控制器调用的Model层的方法总结

控制器器里:/*** Created by PhpStorm.* User: Haima* Date: 2018/7/8* Time: 15:58*/namespace app\api\controller\v1;use app\api\model\Banner as BannerModel;use app\api\validate\IDMustBePostiveInt;use app\lib\e...

weixin_39584529的博客 421

phpcms V9 数据模型基类(转)

转自:http://www.cnblogs.com/Braveliu/p/5100421.html 在学习《phpcms V9首页模板文件解析》的第七步,我们看到content_model类,文件路径:phpcms/model/content_model.class.php 从代码中,可以得知content_model类继承于model类。那么model类又是什么呢? 下面请看数据...

dicuzhaoqin8950的博客 144
上一篇: php gerr 统一的错误处理 v0
下一篇: php source&instance(源&副本)的代码结构
gevolution90
博客等级 码龄18年 19粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值