ThinkPHP 中M方法和D方法的具体区别及其他方法介绍

M方法和D方法的区别

ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类。

使用M方法

如果是如下情况,请考虑使用 M方法:

  1. 对数据表进行简单的 CURD 操作而无复杂的业务逻辑时
  2. 只有个别的表有较为复杂的业务逻辑时,将 M方法 与实例化 CommonModel 类进行结合使用

M方法 甚至可以简单看着就是对参数表名对应的数据表的操作:

$User = M('User');

使用D方法

如果是如下情况,请考虑使用 D方法:

  1. 需要使用 ThinkPHP 模型中一些高级功能如自动验证功能(create()方法中实现)、关联模型等
  2. 业务逻辑比较复杂,且涉及的表众多
  3. 将业务逻辑定义在了自定义的模型类里面(Lib/Model目录下),而想在操作中实现这些业务逻辑

另外 D方法 不支持跨项目调用,需要使用:

$User = D('User', 'Admin');    // 实例化 Admin 项目下面的 User 模型
$User = D('Admin.User');        // 启用了项目分组

提示

启用了项目分组后,Model 类并不必然对应着项目分组。多个项目组之间共有的模型类,统一放在 Model 目录下,可以直接使用D('ModelName') 实例化。而 D('User.UserInfo') 并不表示 User 一定是一个项目分组,也可以仅仅是对 Model 下文件的一个分类目录,D('User.UserInfo') 实例化的是 User 目录下的 UserInfo 模型类。

总结

M方法 和 D方法 都可以在模型类文件不存在的情况下直接使用的,但显然 M方法 更高效;但要使用模型类里面业务逻辑,就必须使用 D方法。

一个比较形象的比喻就是:M方法 就如一台刚装好操作系统的电脑,只能使用一些基本功能;而 D方法 就如在装好的系统上再安装了一些如 Office、QQ 等应用软件,功能更加强大,同时整个电脑运行速度也变慢了。

以上是对 M方法和D方法区别的一些总结,M方法 和 D方法 要根据实际情况来具体选择。


《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《

thinkphp的各种内部函数 D()、F()、S()、C()、L()、A()、I()详解

D、F、S、C、L、A、I 他们都在functions.php这个文件家
下面我分别说明一下他们的功能

D() 加载Model类
M() 加载Model类

A() 加载Action类
L() 获取语言定义
C() 获取配置值    用法就是   C("这里填写在配置文件里数组的下标")
S() 全局缓存配置 用法S(“这里相当于一个唯一的标识”)
F() 快速文件数据读取和保存 针对简单类型数据 字符串、数组
I()   快速创建一个对象实例

以上如果有遗漏的 内部函数

ThinkPHP值得大家学习的源码,特别是他们的中文注释让我们很容易就了解他源码中的内容

在用thinkphp做程序时经常能用到的内部函数,对于换成这一块用S()比较会减轻对数据库的负担!

在thinkphp中出了有内部还是,thinkphp还把配置文件保存为静态变量,在模板里方便快速调用

如果{$Thinkphp.config.参数名称}

如果主键是自动增长的,用add()的时候他会自动的返回一个插入新记录的ID值

我们在做用户金币或者是积分或者是投票的时候,需要对指定的字段自加1这时候我可以可以这样写

$s= D('admin');$s->score='(score+1)';$s->save(); 这样我们会剩下许多的步骤。

如果要修改指定的一个字段用简单的办法  D('admin')->setField('name','hehe','id=2');

我们要灵活的应用  thinkphp 查询语句


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值