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伪静态写法附代码
Jun 20 PHP
PHP中的cookie不用刷新就生效的方法
Feb 04 PHP
微信扫描二维码登录网站代码示例
Dec 30 PHP
使用YUI+Ant 实现JS CSS压缩
Sep 02 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
护卫神php套件 php版本升级方法(php5.5.24)
May 10 PHP
php 批量查询搜狗sogou代码分享
May 17 PHP
php析构函数的简单使用说明
Aug 24 PHP
Yii使用Captcha验证码的方法
Dec 28 PHP
thinkPHP查询方式小结
Jan 09 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
Oct 08 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
Smarty模板快速入门
2007/01/04 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
详解jquery中$.ajax方法提交表单
2014/11/03 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
Python中使用PIPE操作Linux管道
2015/02/04 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
一份Java笔试题
2012/02/21 面试题
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
大学生军训自我评价分享
2013/11/09 职场文书
毕业生自荐信
2013/12/14 职场文书
简单的辞职信范文
2014/01/18 职场文书
房产买卖委托公证书
2014/04/04 职场文书
财务管理专业求职信
2014/06/11 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
经验交流材料格式
2014/12/30 职场文书
万能检讨书
2015/01/27 职场文书
预备党员考察意见范文
2015/06/01 职场文书
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis