ThinkPHP中实例化对象M()和D()的区别?ThinkPHP如何实例化对象?
在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法。
通俗一点说:
M实例化参数是数据库的表名。
D实例化的是你自己在Model文件夹下面建立的模型文件

例如:$user = new UserModel();
等价于$user = D('user');
如果实例化的是一个空模型
例如 $Demo = new Model();
那么它等价于 $Demo = M();

------------------------------------------------------------------------
D和M的区别主要在于:
M方法不需要创建模型类文件,M方法不会读取模型类,所以默认情况下自动验证是无效的,但是可以通过动态赋值的方式实现
而D方法必须有创建模型类。

我们可以用下面两种方法去创建一个数据表的映射对象
第一种:$Test = D('Test')
第二种:$Test = new Model('Test')
虽然这两种都可以对数据进行select,insert,delete,udpate操作,在
数据验证上有很大的不同,用第一种方式实例一个模型就会有数据检查功能,如果 title 没有填写的话就会提示 “请输入标题” (这个是tp提供的一个自动验证功能,当然也需要在相应的model中定义好验证条件);

如果用第二种就没有了·····

还有1个区别就是当用了$trueTableName后,必须用$test=d('test'),表示查询的是test表,

如果用的是$test=m('test'),那么都表示查询的数据边是think_test。

thinkphp2.0版本测试有如此上面的问题
-----------------------------------------------------------------------------------------------
通俗点说:
D就是实例化一个基于Model文件的Model。
M则是通过直接实例化Model方法(ThinkPHP基类)来动态的实例化一个Model对象,即使这个对应的Model文件不存在
============================================================================
A快速实例化Action类库
B执行行为类
C配置参数存取方法
D快速实例化Model类库
F快速简单文本数据存取方法
L 语言参数存取方法
M快速高性能实例化模型
R快速远程调用Action类方法
S快速缓存存取方法
U URL动态生成和重定向方法
W 快速Widget输出方法
 
D函数实例化的是你当前项目的Lib/Model下面的模块。
如果该模块不存在的话,直接返回实例化Model的对象(意义就与M()函数相同)。
而M只返回,实例化Model的对象。它的$name参数作为数据库的表名来处理对数据库的操作。

转载于:https://www.cnblogs.com/o-ye/p/6095986.html

Thinkphp框架中D()和M()的区别相关推荐

  1. php框架m方法详细,Thinkphp框架中D方法与M方法的区别是什么

    Thinkphp框架中D方法与M方法的区别是什么 发布时间:2021-02-06 23:09:38 来源:亿速云 阅读:69 作者:小新 小编给大家分享一下Thinkphp框架中D方法与M方法的区别是 ...

  2. 在thinkphp框架中如何对多表进行操作(thinkphp多表查询方法)

    在thinkphp框架中如何对多表进行操作(thinkphp多表查询方法) 本文讲解了在thinkphp框架中如何对多表进行操作,ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷 ...

  3. ping php支付,thinkphp框架中引出ping++支付server SDK

    thinkphp框架中引入ping++支付server SDK ping++支付平台整合了支付宝,微信支付,百度钱包,银联支付等主流支付方式.而且其开发文档,也很容易理解和上手,所以想写篇博客,记录下 ...

  4. php视图,thinkPHP框架中视图的讲解(附代码)

    这篇文章给大家介绍的内容是关于thinkPHP框架中视图的讲解(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. thinkPHP中有一个方法和display()相似,fetc ...

  5. Spring框架中ApplicationContext与BeanFactory的区别

    前言 Spring框架中ApplicationContext与BeanFactory的区别.其中,BeanFactory为ApplicationContext的父类,是一种继承关系,Applicati ...

  6. php行为和事件是什么,Yii Framework框架中事件和行为的区别及应用实例分析

    本文实例讲述了Yii Framework框架中事件和行为的区别及应用.分享给大家供大家参考,具体如下: 个人觉得,在 Yii 里面,最难以明白的就是事件(Event)和行为(behavior)了.这不 ...

  7. ThinkPHP框架中解决无法加载控制器的问题—原因之一

    相信许多PHP开发者在使用ThinkPHP框架进行快速开发的时候遇到过通过URL访问控制器方法时遇到图上的这种问题. 为什么会无法加载控制器呢,原因有很多,但是据我所了解的来看,最有可能的还是: 你的 ...

  8. ThinkPHP框架中使用富文本编辑器后如何输出

    htmlspecialchars_decode()用这个能解析里面的符号 我们在利用ThinkPHP提交数据的时候,数据库里的数据是含各种html标签的,那么在输出时就可以直接输出嘛.但是,也许你的老 ...

  9. Spring框架中IOC和DI的区别

    IOC:全称Inversion of Control,中文释义为控制反转. 简单地说,IOC就是把对象的实例化工作交由Spring容器来完成.IOC可以说是一种思想,传统的应用程序是我们自己去创建(n ...

最新文章

  1. php 超长用省略号代替
  2. LeetCode 64. Minimum Path Sum(最小和的路径)
  3. vs2013配置opencv2.4.9
  4. 虚拟机链接ftp服务器,linux虚拟机连接ftp服务器
  5. golang rpc demo
  6. bzoj 1645: [Usaco2007 Open]City Horizon 城市地平线【线段树+hash】
  7. uos配置 java 环境变量_CentOS 7.3 环境配置java和tomcat开机启动
  8. Head First设计模式读书笔记五 第六章 命令模式(单例略过)
  9. linux 解压 视频插件,linux下压缩解压缩命令
  10. thinkphp-条件判断-范围判断-in
  11. 3、SpringBoot集成Storm WorldCount
  12. 计算机的新技术未来发展趋势论文,计算机最新技术发展趋势毕业论文
  13. Codeblock汉化教程
  14. 《西点军校的经典法则》序 -- 責任(せきにん)、栄誉(えいよ)、国家(こっか)
  15. hikvision服务器重装系统,一篇看懂黑群晖重装系统
  16. java跨域问题Response to preflight request doesn‘t pass access control check: No ‘Access-Control-Allow-Or
  17. BLDC反电势过零检测计算
  18. 软碟通(UltraISO)刻录光盘以及制作U盘启动盘教程
  19. 处理超时订单(超时未付款)的解决方案
  20. h5获取当前浏览器ip和城市名称

热门文章

  1. tomcat设置https访问
  2. Pandas简明教程:七、Pandas缺失数据的处理(数据清洗基础)
  3. FisherVector编码的来龙去脉
  4. linux 分区 var,Ubuntu下移动/var目录到单独分区后出现的一些问题
  5. python从事哪些职业好玩_Python就业可选方向有哪些?带你了解Python主流职业选择!...
  6. quirks 模式是什么?它和 standards 模式有什么区别_什么是二级分销模式
  7. swiper左右切换按钮无效_BMD为ATEM切换台发布新的2 M/E和4M/E控制面板
  8. dubbo原理_dubbo实现原理介绍
  9. PyQt5 技术篇-设置滚动条拉动位置,scrollArea滚动条位置设置方法。
  10. SDUT_2116 数据结构实验之链表一:顺序建立链表