首页 > 开发 > ThinkPHP > 正文

Thinkphp实例化对象的四种方法比较

2020-10-12 21:01:48
字体:
来源:转载
供稿:网友

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

New方法

new方法是最好理解的一种方法,就是普通的实例化类,参数可选,依次是表名、表前缀、数据库连接信息,大多数情况下不需要传参。

new /Home/Model/NewModel('new','think_','DB_CONFIG');

D方法

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

  1. //实例化模型 
  2. $User = D('User'); 
  3. // 相当于  
  4. $User = new /Home/Model/UserModel(); 
  5. // 执行具体的数据操作 
  6. $User->select(); 
  7. 当 /Home/Model/UserModel 类不存在的时候,D函数会尝试实例化公共模块下面的 /Common/Model/UserModel 类,如果还不存在的话则会实例化系统的/Think/Model基类,这是一点值得注意的地方。 

M方法:

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

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

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

实例化空模型类

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

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选