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 配置open_basedir 让各虚拟站点独立运行
Nov 12 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
PHP 类相关函数的使用详解
May 10 PHP
解析:使用php mongodb扩展时 需要注意的事项
Jun 18 PHP
php实现查询百度google收录情况(示例代码)
Aug 02 PHP
PHP实现读取一个1G的文件大小
Aug 24 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
php通过rmdir删除目录的简单用法
Mar 18 PHP
php生成curl命令行的方法
Dec 14 PHP
win7安装php框架Yii的方法
Jan 25 PHP
php实现中文转数字
Feb 18 PHP
php防止表单重复提交实例讲解
Feb 11 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
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
jQuery 操作XML入门
2008/12/25 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
JS简单实现登陆验证附效果图
2013/11/19 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
JavaScript函数详解
2015/02/27 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
Bootstrap 布局组件(全)
2016/07/18 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
2018/09/13 Javascript
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
python和shell变量互相传递的几种方法
2013/11/20 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
pygame实现贪吃蛇游戏(上)
2019/10/29 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
物业管理员岗位职责范文
2013/11/25 职场文书
党员思想汇报范文
2013/12/30 职场文书
环境日宣传活动总结
2014/07/09 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
个性发展自我评价2015
2015/03/09 职场文书
Python实现单例模式的5种方法
2021/06/15 Python
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技
vue实现简易音乐播放器
2022/08/14 Vue.js