模型的实例化操作(重点)

模型虽然已经创建完成,但是由于模型的本质是一个类,类在使用的时候需要实例化操作。

5.1、普通实例化方法

普通实例化方法是指通过自己编写代码来new一个对象。

$obj = new 类名();

在控制器中定义一个方法来实例化模型,使用的是普通方式实例化:

创建部门控制器文件:

TP中模型实例化-LMLPHP

实例化代码:

TP中模型实例化-LMLPHP

实例化结果:

TP中模型实例化-LMLPHP

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方法对模型进行实例化操作。

TP中模型实例化-LMLPHP

TP中模型实例化-LMLPHP

实例化代码:

TP中模型实例化-LMLPHP

经典面试题:

问:实例化方法中D方法和M方法有什么区别?

答:D方法是实例化自定义模型,如果自定义模型不存在,则实例化父类模型;M方法本身就是直接实例化父类模型。两者的差异就是实例化的对象不一样。

在后期开发的时候怎么去选择是使用D方法还是M方法呢?

可以根据自身的情况,如果需要使用的操作父类中已经封装好了,则可以直接实例化父类(使用M方法),如果父类中方法不能满足我们的开发需要求,需要自己定义方法,则这个时候可以使用D方法实例化自定义模型。

05-26 18:48