ThinkPHP中实例化对象M()和D()的区别

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参数作为数据库的表名来处理对数据库的操作。

最新文章

  1. java web学习总结(五) -------------------servlet开发(一)
  2. android 中theme和style的语法相关
  3. 【leetcode】 Palindrome Partitioniong (middle) (*^__^*)
  4. 只用css来美化的上传表单按钮(抄的迅雷的)
  5. For循环List中删除正确的方式
  6. js运动 缓冲运动
  7. linux 踢出用户方法
  8. HTML <base> 标签的 target 属性 —— <base target="_blank" />
  9. ObjectiveC 文件操作一
  10. AndroidUI的组成部分ProgressBar
  11. swiftSingleton模式
  12. c# winform中的一段代码赏析
  13. 20145237 《Java程序设计》第10周学习总结
  14. hdu 5340 (manacher)
  15. PHP程序员从小白到高手,掌握这些技能少走弯路
  16. Python运维开发基础01-语法基础【转】
  17. python常用模块之re模块(正则)
  18. mysql 核心知识要点
  19. C#复习题(概念) --C#学习笔记
  20. 关于java弱引用

热门文章

  1. Linux cooked-mode capture 格式转换
  2. 转载:PHP 协程实现
  3. 轻松精通awk数组企业问题案例
  4. 什么是SQL注入?(理解)
  5. 第十七篇:django基础(二)
  6. 几个简单的VBS脚本程序以及其JS实现
  7. 转 android Listview,gridview局部刷新,部分刷新 (仿QQ动态评论局部刷新)
  8. 静态页面之间的转发与json与ajax做到动态数据
  9. C# WeakReference(弱引用)
  10. gdb 记录临时变量