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 相关文章推荐
example2.php
Oct 09 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
简单实用的.net DataTable导出Execl
Oct 28 PHP
php利用cookie实现自动登录的方法
Dec 10 PHP
PHP实现的sqlite数据库连接类
Dec 12 PHP
php实现excel中rank函数功能的方法
Jan 20 PHP
PHP 正则表达式小结
Feb 12 PHP
微信API接口大全
Apr 15 PHP
php实现购物车产品删除功能(2)
Jul 23 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
PHP实现链表的定义与反转功能示例
Jun 09 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
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
Javascript 实用小技巧
2010/04/07 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
详解vue页面首次加载缓慢原因及解决方案
2019/11/06 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
vue中使用router全局守卫实现页面拦截的示例
2020/10/23 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
python网络爬虫采集联想词示例
2014/02/11 Python
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
详解python并发获取snmp信息及性能测试
2017/03/27 Python
Python断言assert的用法代码解析
2018/02/03 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
python3让print输出不换行的方法
2020/08/24 Python
实例代码讲解Python 线程池
2020/08/24 Python
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
2013/01/31 HTML / CSS
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
小学英语教学反思
2014/01/30 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
Python基础之进程详解
2021/05/21 Python
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android
Java数据结构之堆(优先队列)
2022/05/20 Java/Android