在Thinkphp有四种不同的方法实例化对象,new方法、D方法、M方法、空模型方法,比较常用的是D方法和M方法。本文大都是官方手册东西,自己稍微做了下总结。
New方法
new方法是最好理解的一种方法,就是普通的实例化类,参数可选,依次是表名、表前缀、数据库连接信息,大多数情况下不需要传参。
new /Home/Model/NewModel('new','think_','DB_CONFIG');
D方法
D方法Thingkphp(下面简称TP)系统提供的一个实例化类的快捷方法,通过D方法我们可以快速的实例化一个类并使用。
- //实例化模型
- $User = D('User');
- // 相当于
- $User = new /Home/Model/UserModel();
- // 执行具体的数据操作
- $User->select();
- 当 /Home/Model/UserModel 类不存在的时候,D函数会尝试实例化公共模块下面的 /Common/Model/UserModel 类,如果还不存在的话则会实例化系统的/Think/Model基类,这是一点值得注意的地方。
M方法:
D方法实例化模型类的时候通常是实例化某个具体的模型类,如果你仅仅是对数据表进行基本的CURD操作的话,使用M方法实例化的话,由于不需要加载具体的模型类,所以性能会更高。
- // 使用M方法实例化
- $User = M('User');
- // 和下面用法等效
- $User = new /Think/Model('User');
- // 执行其他的数据操作$User->select();
如果你的模型类有自己的业务逻辑,M方法是无法支持的,就算是你已经定义了具体的模型类,M方法实例化的时候是会直接忽略。
实例化空模型类
如果你仅仅是使用原生SQL查询的话,不需要使用额外的模型类,实例化一个空模型类即可进行操作了
- //实例化空模型
- $Model = new Model();
- //或者使用M快捷方法是等效的
- $Model = M();
- //进行原生的SQL查询
- $Model->query('SELECT * FROM think_user WHERE status = 1');
总结:我们在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法,M方法会直接忽略自定义的具体模型类。
新闻热点
疑难解答
图片精选