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
PHP经典的给图片加水印程序
Dec 06 PHP
php 什么是PEAR?
Mar 19 PHP
PHP中的函数嵌套层数限制分析
Jun 13 PHP
PHP基础教程(php入门基础教程)一些code代码
Jan 06 PHP
php+mysql实现用户注册登陆的方法
Jan 03 PHP
YII2.0之Activeform表单组件用法实例
Jan 09 PHP
PHP mysql事务问题实例分析
Jan 18 PHP
Yii核心验证器api详解
Nov 23 PHP
PHP观察者模式定义与用法实例分析
Mar 22 PHP
PHP实现时间日期友好显示实现代码
Sep 08 PHP
PHP使用PDO 连接与连接管理操作实例分析
Apr 21 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
PHPMyAdmin 快速配置方法
2009/05/11 PHP
php设计模式 Interpreter(解释器模式)
2011/06/26 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
Javascript Global对象
2009/08/13 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
socket.io学习教程之基础介绍(一)
2017/04/29 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
Vue EventBus自定义组件事件传递
2018/06/25 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
Windows 7下Python Web环境搭建图文教程
2018/03/20 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
python 多线程重启方法
2019/02/18 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
python上selenium的弹框操作实现
2020/07/13 Python
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
介绍一下linux的文件系统
2015/10/06 面试题
女大学生个人求职信
2013/12/09 职场文书
迟到检讨书500字
2014/02/05 职场文书
总经理助理工作职责
2014/02/06 职场文书
学校清明节活动总结
2014/07/04 职场文书
销售目标责任书
2014/07/23 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL