Thinkphp框架中D方法与M方法的区别


Posted in PHP onDecember 23, 2016

D()和M()方法的区别:

D和M的区别主要在于

M方法不需要创建模型类文件,M方法不会读取模型类,所以默认情况下自动验证是无效的,但是可以通过动态赋值的方式实现

而D方法必须有创建模型类。

我们可以用下面两种方法去创建一个数据表的映射对象

第一种:$Test = D(‘Test')

第二种:$Test = new Model(‘Test')

虽然这两种都可以对数据进行select,insert,delete,udpate操作,在

数据验证上有很大的不同,

用第一种方式实例一个模型就会有数据检查功能,如果 title 没有填写的话就会提示 “请输入标题” (这个是tp提供的一个自动验证功能,当然也需要在相应的model中定义好验证条件);

如果用第二种就没有了这个数据验证功能,需要手动验证。

总结如下:

D函数实例化的是你当前项目的Lib/Model下面的模块。

如果该模块不存在的话,直接返回实例化Model的对象(意义就与M()函数相同)。

而M只返回,实例化Model的对象。它的$name参数作为数据库的表名来处理对数据库的操作。

通俗点说:

D就是实例化一个基于Model文件的Model。

M则是通过直接实例化Model方法(ThinkPHP基类)来动态的实例化一个Model对象,即使这个对应的Model文件不存在。

再通俗一点说:

M实例化参数是数据库的表名。

D实例化的是你自己在Model文件夹下面建立的模型文件。

D就是在你没有定义模型的时候,系统自动帮你定义一个模型,这样你才进行简单的数据输入或者输出。

每一个Action文件都应该对应Model文件的,如果你定义了Model的话,

如:$Form = D(“User”)就可以改成$Form = new  UserModel();(User是指你的模型文件名)。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
利用PHP创建动态图像
Oct 09 PHP
ob_start(),ob_start('ob_gzhandler')使用
Dec 25 PHP
php Undefined index和Undefined variable的解决方法
Mar 27 PHP
php Smarty初体验二 获取配置信息
Aug 08 PHP
PHP与javascript实现变量交互的示例代码
Jul 23 PHP
php中OR与|| AND与&&的区别总结
Oct 26 PHP
php curl_init函数用法
Jan 31 PHP
php时间戳转换的示例
Mar 31 PHP
腾讯CMEM的PHP扩展编译安装方法
Sep 25 PHP
PHP+redis实现添加处理投票的方法
Nov 14 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
Dec 23 #PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
Dec 23 #PHP
php的4种常用运行方式详解
Dec 22 #PHP
php curl 模拟登录并获取数据实例详解
Dec 22 #PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
Dec 21 #PHP
Docker配置PHP开发环境教程
Dec 21 #PHP
PHP符合PSR编程规范的实例分享
Dec 21 #PHP
You might like
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
推荐php模板技术[转]
2007/01/04 PHP
php header()函数使用说明
2008/07/10 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
PDO::errorInfo讲解
2019/01/28 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
js实现五星评价功能
2017/03/08 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
Node.js 基础教程之全局对象
2017/08/06 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
Python中实现的RC4算法
2015/02/14 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
2018/10/17 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
Python执行时间的几种计算方法
2020/07/31 Python
Python利用命名空间解析XML文档
2020/08/10 Python
美容院考勤制度
2014/01/30 职场文书
财务担保书范文
2014/04/02 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
运动会宣传口号
2014/06/09 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
幼儿园2014年度工作总结
2014/11/10 职场文书
学生个人总结范文
2015/02/15 职场文书