02-如何实例化模型

在ThinkPHP中,可以无需进行任何模型定义。只有在需要封装单独的业务逻辑的时候,模型类才是必须被定义的,因此ThinkPHP在模型上有很多的灵活和方便性,让你无需因为表太多而烦恼。 根据不同的模型定义,我们有几种实例化模型的方法,下面来分析下什么情况下用什么方法:

1、实例化基础模型(Model) 类 在没有定义任何模型的时候,我们可以使用下面的方法实例化一个模型类来进行操作:

  1. //实例化User模型
  2. $User = new Model(‘User‘);
  3. //或者使用M()快捷方法实例化,和上面的方法是等效的
  4. $User = M(‘User‘);
  5. //执行其他的数据操作
  6. $User->select();

这种方法最简单高效,因为不需要定义任何的模型类,所以支持跨项目调用。缺点也是因为没有自定义的模型类,因此无法写入相关的业务逻辑,只能完成基本的CURD操作。

2、实例化用户自定义模型(×××Model)类 这种情况是使用的最多的,一个项目不可避免的需要定义自身的业务逻辑实现,就需要针对每个数据表定义一个模型类,例如UserModel 、InfoModel等等。 定义的模型类通常都是放到项目的Lib\Model目录下面。例如,

  1. <?php
  2. class UserModel extends Model{
  3. public function getTopUser(){
  4. //添加自己的业务逻辑
  5. // ...
  6. }
  7. }

其实模型类还可以继承一个用户自定义的公共模型类,而不是只能继承Model类。 要实例化自定义模型类,可以使用下面的方式:

  1. <?php
  2. //实例化自定义模型
  3. $User = new UserModel();
  4. //或者使用D快捷方法
  5. $User = D(‘User‘);
  6. //执行具体的数据操作
  7. $User->select();

D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化Model基类,同时对于已实例化过的模型,不会重复去实例化。 D方法还可以支持跨项目和分组调用,需要使用:

  1. //实例化Admin项目的User模型
  2. D(‘Admin://User‘)
  3. //实例化Admin分组的User模型
  4. D(‘Admin/User‘)
时间: 2024-08-03 17:06:42

02-如何实例化模型的相关文章

TP实例化模型的两种方式 M() D()

TP框架中实例化模型的两种方式 #如果使用自己自定义的函数,那么就用D $mode=D('model'); #如果使用是系统自带的函数,那么就是用M $model=M('model');

(转)一句话实例化模型(MJ老师厉害)

读书人偷书不算偷 在iOS开发中,很多时候我们需要用字典来实例化模型,这就意味着没需要实例化一个模型的时候都需要重复的写init方法来实例化模型,为了“偷懒”,可以使用宏定义来减少代码 定义一个头文件"initWithDict.h" 1 // 英文字母.数字._ 2 //##为宏定义中得连接符 “\”表示下一行也属于宏 3 #define kInitH(name) 4 - (id)initWithDict:(NSDictionary *)dict; 5 + (id)name##With

开涛spring3(6.8) - AOP 之 6.8 切面实例化模型

所谓切面实例化模型指何时实例化切面. Spring AOP支持AspectJ的singleton.perthis.pertarget实例化模型(目前不支持percflow.percflowbelow 和pertypewithin). singleton:即切面只会有一个实例: perthis:每个切入点表达式匹配的连接点对应的AOP对象都会创建一个新切面实例: pertarget:每个切入点表达式匹配的连接点对应的目标对象都会创建一个新的切面实例: 默认是singleton实例化模型,Schem

201507221403_《backbone之一——新建模型和集合、实例化模型、模型上监听事件的方法、模型设置和获取后台数据、配置理由方法、视图绑定事件的方法、绑定模型等》

一 . 新建 var model_1 = new Backbone.Model({'name':'hello'}); var model_2 = new Backbone.Model({'name':'hi'}); var models = new Backbone.Collection(); models.add( model_1 ); models.add( model_2 ); alert( JSON.stringify(models) ); 二. 实例化模型 var M = Backbo

ThinkPHP学习笔记 实例化模型的四种方法

创建Action类 [php] <?php class NewObjectAction extends Action{ public function index(){ //1.创建一个基础模型 //      //一:实例化一个系统的数据库操作类 //      //new Model('User')相当于M('User'),在Model中放置一个需要操作的表 //      //1命名: //      //  thinkphp默认的有表名前缀,如果为think_user:则在Model中可

【FLUENT案例】02:DPM模型

1 引子1.1 案例描述1.2 学习目标1.3 模拟内容2 启动FLUENT并导入网格3 材料设置4 Cell Zones Conditions5 Calculate6 定义Injecions7 定义DPM材料8 颗粒追踪9 设置粒子分布直径10 粒子追踪11 统计出口面上粒径分布12 修改壁面边界以捕捉颗粒13 颗粒追踪14 考虑湍流效应15 考虑冲蚀16 后处理查看壁面冲蚀云图17 导出数据到CFD-POST18 CFD-POST操作 本案例延续案例1的模型及计算结果. 1 引子 1.1 案

html实践——IFE task 02(盒子模型)

1. 元素分类 在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. (1)常用的块状元素有: <div>.<p>.<h1>...<h6>.<ol>.<ul>.<dl>.<table>.<address>.<blockquote> .<form> 块级元素特点: 每个块级元素都从新的一行开始,并且其后的元素也另起一行.(

ThinkPHP中的模型

ThinkPHP中的模型 1.什么是模型(Model) 模型表示企业数据和业务规则,实际项目开发中,主要实现与数据库进行操作. 2.模型的定义规则 模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,然后加上模型类的关键词Model,再加上类文件后缀.class.php 案例:实现移动办公自动化系统的组织结构功能 ① 设计数据库db_think ② 设计数据表结构(tk_dept) id ???? 编号 ????int 自动增长 主键 name 部门名称 varchar(4

模板实例化

如果说上一篇博文<模板名称>是教人怎么写模板,那么这一篇就是教人怎么使用模板. 模板实例化的复杂性在于:对于产生自模板的实体,它们的定义已经不再局限于源代码中的单一位置. 一.理解两个概念 (1)实例化:实例化在C++中通常指“根据类型创建一个对象”,但是在模板里面,实例化是指使用具体值替换模板实参,从模板中产生普通类,函数或者成员函数的过程. (2)特化:这个过程最后获得的试题就是我们所说的特化. 然而,实例化过程并不是特化的唯一方式,还有显式特化,通过引入一个template<>