TP中模型实例化
模型的实例化操作(重点)
模型虽然已经创建完成,但是由于模型的本质是一个类,类在使用的时候需要实例化操作。
5.1、普通实例化方法
普通实例化方法是指通过自己编写代码来new一个对象。
$obj = new 类名();
在控制器中定义一个方法来实例化模型,使用的是普通方式实例化:
创建部门控制器文件:

实例化代码:

实例化结果:

5.2、快速实例化方法
上述的普通实例化方法虽然可以进行实例化操作,但是使用上比较麻烦,还需要考虑命名空间,所以ThinkPHP为了简单、快速、高效开发,为我们提供了2个快速方法可以对模型进行实例化操作:
M方法和D方法。
D方法实例化:
$obj = D([‘模型名’]);
表达的含义:实例化我们自己创建的模型(分组/Model目录中);如果传递了模型名,则实例化指定的模型,如果没有指定或者模型名不存在,则直接实例化父类模型(Model.class.php)。
M方法实例化:
$obj = M([‘不带前缀的表名’]);
表达的含义:直接实例化父类模型(Think目录下的Model.class.php);如果指定了表名,则实例化父类模型的时候关联指定的表;如果没有指定表名(没有传递参数)则不关联表,一般用于执行原生的sql语句(M() -> query(原生的sql语句))。
案例:使用快速方法D和M方法对模型进行实例化操作。


实例化代码:

经典面试题:
问:实例化方法中D方法和M方法有什么区别?
答:D方法是实例化自定义模型,如果自定义模型不存在,则实例化父类模型;M方法本身就是直接实例化父类模型。两者的差异就是实例化的对象不一样。
在后期开发的时候怎么去选择是使用D方法还是M方法呢?
可以根据自身的情况,如果需要使用的操作父类中已经封装好了,则可以直接实例化父类(使用M方法),如果父类中方法不能满足我们的开发需要求,需要自己定义方法,则这个时候可以使用D方法实例化自定义模型。
TP中模型实例化的更多相关文章
- PHP.23-ThinkPHP框架的三种模型实例化-(D()方法与M()方法的区别)
三种模型实例化 原则上:每个数据表应对应一个模型类(Home/Model/GoodsModel.class.php --> 表tp_goods) 1.直接实例化 和实例化其他类库一样实例化模型类 ...
- 关于thinkphp框架中模型笔记
模型这一块,感觉学习的不是很清楚,单独水一贴thinkphp中模型的学习笔记. 0x01 模型类简介 数据库中每一张表对应一个模型,类名就是表名,类里面的成员变量就是列名, 把一张表对应为一个类,其中 ...
- 【分类问题中模型的性能度量(二)】超强整理,超详细解析,一文彻底搞懂ROC、AUC
文章目录 1.背景 2.ROC曲线 2.1 ROC名称溯源(选看) 2.2 ROC曲线的绘制 3.AUC(Area Under ROC Curve) 3.1 AUC来历 3.2 AUC几何意义 3.3 ...
- 【Java EE 学习 70 下】【数据采集系统第二天】【Action中User注入】【设计调查页面】【Action中模型赋值问题】【编辑调查】
一.Action中User注入问题 Action中可能会经常用到已经登陆的User对象,如果每次都从Session中拿会显得非常繁琐.可以想一种方法,当Action想要获取User对象的时候直接使用, ...
- tp中使用分页技术
1 public function showList() { $m_ld = D ( 'guangxi_ld' ); $page = I ( 'get.p', 1 ); // 在配置中获取分页值 $p ...
- WCF初探-27:WCF中的实例化
理解WCF中的实例化机制 “实例化”是指对用户定义的服务对象以及与其相关的 InstanceContext 对象的生存期的控制.也就是说我们的客户端程序在调用服务端方法时,需要实例化一个服务端代理类对 ...
- django中模型详解-字段类型与约束条件
这片博文来详细说明django模型的使用,涉及到django模型的创建,字段介绍,以及django模型的crud操作,以及一对一等操作. 在使用模型之前,我们首先设置数据库选项,django的默认数据 ...
- python---Django中模型类中Meta元对象了解
Django中模型类中Meta元对象了解 1.使用python manage.py shell 进入编辑命令行模式,可以直接进入项目(为我们配置好了环境) python manage.py shell ...
- Java中创建实例化对象的几种方式
Java中创建实例化对象有哪些方式? ①最常见的创建对象方法,使用new语句创建一个对象.②通过工厂方法返回对象,例:String s =String.valueOf().(工厂方法涉及到框架)③动用 ...
随机推荐
- 20155216 2016-2017-2 《Java程序设计》第三周学习总结
教材学习内容总结 区分基本类型与类类型 类类型是自己定义产生的,基本类型是long,int,double等类型. 在类的定义过程中,可直接用class XXX {}对每个序定义的值域成员进行定义.这样 ...
- 20155325实验四 Android程序设计
实验四 Android程序设计-1 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)&g ...
- 20145234黄斐《Java程序设计》第九周
教材学习内容总结 整合数据库 JDBC入门 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性,数据库本身是个独 ...
- 342. Power of Four(One-line)
342. Power of Four Total Accepted: 707 Total Submissions: 2005 Difficulty: Easy Given an integer ...
- dedecms 后台网站 标题设置
打开文件夹,找到dede/templets/index2.htm,修改第6行就行了
- easyui-dialog打开多次数据串台问题
问题: 公司项目最近在用easyui写后台管理系统,发现dialog使用后总会报出莫名奇妙的问题 1.打开多次后数据显示上一次的,表单提交错误或者获取数据错误 2.来回跳转后,会有打开其它dialog ...
- Java——基于java自身包实现消息系统间的通信(TCP/IP+BIO)
最近看到阿里的一位童鞋写的一本关于分布式的书,感觉不错,准备把这本书上基础的代码都写一写. /** * Created by LiuHuiChao on 2016/11/15. * descripti ...
- crontab练习题
Crontab练习题 每周一到周六的凌晨3点20分,运行tar命令对/etc/目录进行存档另存,存储位置为/backups/etc-YYYY-MM-DD.tar.gz 20 3 * * 1-6 /us ...
- 验证码示例代码演示——以php为例
运行 · 修改index.php(图片验证码的生成示例) [html] view plain copy initNECaptcha({ captchaId: 'YOUR_CAPTCHA_ID', // ...
- 《Node.js核心技术教程》学习笔记
<Node.js核心技术教程>TOC \o "1-3" \h \z \u 1.章模块化编程 2019.2.19 13:30' PAGEREF _101 \h 1 08D ...