thinkphp D方法和M方法的区别

在Thinkphp有四种不同的方法实例化对象,new方法、D方法、M方法、空模型方法,比较常用的是D方法和M方法。本文大都是官方手册东西,自己稍微做了下总结 ###

 

一、new方法

new方法是最好理解的一种方法,就是普通的实例化类;

  1. <?php
  2. //参数可选,依次是表名、表前缀、数据库连接信息,大多数情况下不需要传参
  3. new \Home\Model\NewModel('new','think_','DB_CONFIG');
  4. ?>

 

二、D方法

D方法Thingkphp(下面简称TP)系统提供的一个实例化类的快捷方法,通过D方法我们可以快速的实例化一个类并使用。

  1. <?php
  2. //实例化模型
  3. $User = D('User');
  4. // 相当于 
  5. $User = new \Home\Model\UserModel();
  6. // 执行具体的数据操作
  7. $User->select();
  8. ?>

 

注意: \Home\Model\UserModel 类不存在的时候,D函数会尝试实例化公共模块下面的 \Common\Model\UserModel 类,如果还不存在的话则会实例化系统的\Think\Model基类,这是一点值得注意的地方。thinkphp D方法

 

三、M方法

D方法实例化模型类的时候通常是实例化某个具体的模型类,如果你仅仅是对数据表进行基本的CURD操作的话,使用M方法实例化的话,由于不需要加载具体的模型类,所以性能会更高。

  1. <?php
  2. // 使用M方法实例化
  3. $User = M('User');
  4. // 和下面用法等效
  5. $User = new \Think\Model('User');
  6. // 执行其他的数据操作$User->select();
  7.  ?>

 

注意:如果你的模型类有自己的业务逻辑,M方法是无法支持的,就算是你已经定义了具体的模型类,M方法实例化的时候是会直接忽略。

thinkphp M方法

 

四、实例化空模型类

如果你仅仅是使用原生SQL查询的话,不需要使用额外的模型类,实例化一个空模型类即可进行操作了

  1. <?php
  2. //实例化空模型
  3. $Model = new Model();
  4. //或者使用M快捷方法是等效的
  5. $Model = M();
  6. //进行原生的SQL查询
  7. $Model->query('SELECT * FROM think_user WHERE status = 1');
  8. ?>

 

总结

我们在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法,M方法会直接忽略自定义的具体模型类。

付杰
  • ¥ 98.0元
  • 市场价:298.0元
  • ¥ 149.0元
  • 市场价:299.0元
  • ¥ 999元
  • 市场价:4999元
  • ¥ 69.0元
  • 市场价:99.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  0   博主  0

  1. 头像 祝安 4

    我一直用的D方法,只为逼格高点!