thinkPHP3.2框架——Model实例化模型

模型:

模型是MVC三大组成部分的M(Model),作用是操纵数据,负责与数据表的数据交互

 

创建模型类:

命名规范:

模型名(要求是不带前缀的表名并且首字母要大写)+Model关键词+.class.php

  • 按照系统的规范来命名模型类的话,大多数情况下是可以自动对应数据表。

 

代码结构规范:

  • 第一步:声明命名空间
  • 第二步:映入父类模型
  • 第三步:声明模型并继承父类

例如:创建一个树木模型文件

命名:TreeModel.class.php

 

模型的实例化操作

因为模型本质是一个类,所以在使用模型的时候需要实例化。

 

普通实例化方法:

$obj = new 命名空间TreeModel();

 

快速实例化方法(D和M函数):

区别:

M("表名"):实例化系统附列model,命名空间为:Think\Model

D("自定义类名"):实例化我们自定义类名,命名空间为:Admin\Model\类名Model

  • D方法功能更强大,因为后面在自定义模型类中添加很多方法和设置,这时候只能通过实例化D()去调用。
  • 如果D方法没有找到定义的模型类,则会自动调用M方法

 

D方法:$obj = D(["模型名"]);

实例化我们自己创建的模型(分组/Model目录中);

  • 如果传递了模型名,则实例化指定的模型,
  • 如果没有指定或者模型名不存在,则直接实例化父类模型(Model.class.php)。
$User = D('User');//实例化模型
// 相当于 $User = new \Home\Model\UserModel();
// 执行具体的数据操作
$User->select();
 
当 \Home\Model\UserModel 类不存在的时候,D函数会尝试实例化公共模块下面的 \Common\Model\UserModel 类。
D方法还可以支持跨模块调用,需要使用:
//实例化Admin模块的User模型
D('Admin/User');

 

M方法:$obj = M([‘不带前缀的表名’]);

直接实例化父类模型(Think目录下的Model.class.php);

  • 如果指定了表名,则实例化父类模型的时候关联指定的表;
  • 如果没有指定表名(没有传递参数)则不关联表,一般用于执行原生的sql语句(M() -> query(原生的sql语句))。
$User = M('User');// 使用M方法实例化
// 和用法 $User = new \Think\Model('User'); 等效
// 执行其他的数据操作
$User->select();

 

实例化空模型类:

空模型也能进行数据表的基本操作(CURD),因为模型继承了父类,所以可执行基本的操作。

你可能感兴趣的:(thinkPHP)