


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ThinkPHP中实例化模型是我们连接数据库并对数据库操作的基础,如何才能实例化模型呢?我们今天就来一起分析下: 首先,什么是模型? 模型(Model)是 ThinkPHP 中一个很重要的概念,与之有关的还包括模型的定义与实例化。 MVC 是一种将应用程序的逻辑层和表现层进行分离的方法,ThinkPHP 也是基于MVC设计模式的。ThinkPHP 中模型(M)的定义是由 Model 类来完成的。 其次,ThinkPHP 中基础的模型类就是 Model 类,该类完成了基本的 CURD、ActiveRecord 模式、连贯操作和统计查询等。其他一些高级特性如: 模型的分类:AdvModel:高级模
2、型类,完成一些如 文本字段、只读字段、序列化字段、乐观锁、多数据库连接 等模型的高级特性 ViewModel:视图模型类,完成了模型的视图操作 RelationModel:关联模型类,完成了模型的关联操作定义模型: 基础模型类 Model 的设计非常灵活,无需进行任何模型定义,就可以进行相关数据表的 ORM 和 CURD 操作。如果需要封装单独的业务逻辑的,就必须定义模型。 定义的模型类文件放在项目 Lib/Model 目录下,由系统自动加载。如我们定义对 user 表的操作,文件名为 UserModel.class.php ,其模型定义为: class UserModel extends M
3、odel/ 一些业务逻辑 在模块的操作中,可以实例化一个定义的模型,从而实现对应的业务逻辑和对数据库表的操作。模型实例化当定义了模型之后,需要在操作中将模型实例化才能具体实现模型中的业务逻辑。 不同的数据业务规则会有不同的模型定义,而在实例化模型的时候也可能不同。ThinkPHP 支持如下几种实例化模型: 实例化基础模型类 实例化其他模型类 实例化用户自定义模型类 实例化空模型类 实例化模型操作的第一种方法 1)通过 new Mode(表名) 如:$user=new Mode(User); $ulist=$user->select(); dump($ulist); 注意: 这种方法比较简
4、单,注意User还可以小写,ThinkPHP会根据User大小写判断是否加上了“_”实例化模型操作的第二种方法 实例化当前表的同时,实例化其他自定义的数据库操作类 如:假设已经存在一个模型 CommonModel 我们可以同时实例化两个模型 $user=M('user','CommonModel'); 当前 另一个 当然这里我们也可以同时实例化两个表注意,我们再实例化多个模型时重点是可以使用另一个模型的方法 比如: CommonModel 有一个自有方法 function aa() echo “aaaaaaaaaaaa”; $user=M('user
5、39;,'CommonModel'); $user->aa(); 模型实例化第二种方法的优点 1) 可以自定义自己的方法,而第一种方法则不可以 2) 可以处理表关联关系的数据 3) 可以实现更加复杂的业务逻辑 /另一种写法 $user= new CommonModel('user'); CommonModel(对应 Lib/Model/CommonModel.class.php 文件)类必须继承 Model 类,如果没有定义别名导入的话,放在项目 Lib/Model 目录下,系统自动加载。我们可以 在CommonModel 类里面定义一些通用的逻辑方法,就
6、可以省去为每个数据表定义具体的模型类。 如果项目涉及的表非常多,而只有个别表有一些复杂的业务逻辑需要封装,那么上面这两种模型实例化方式相结合是一个不错的选择。 实例化模型三 自定义模型 什么是自定义模型?这里我们指的是用户自己创建的,含有自有的方法,可以封装ThinkPHP为我们提供的高级功能的模型使用方法: 1) 在lib/Model/中建立一个和表名同名的 2) 在Action 中调用 示例: /实例化模型,通过new 模型的方法 $user=new UserModel(); /执行查询,返回数组 $list=$user->select(); /查看数组元素内容 dump($list
7、); /调用模型的方法 $user->test(); 示例:注意:通过 new XXXModel() 实例化模型 ,一般 “XXX”对应数据库中的表名 实例化的时候,可以将数据库中名为XXX 表的所有字段全部取出来这种方法同样也对应一个快捷处理方法“D” D(User) 等同于 $user=new UserModel() D(模型名) 和new UserModel() 还存在区别1)D() 方法可以自动检测连接数据库是否正常,不存在会抛出一个异常2)D() 方法对于已经实例化的模型不在进行重复实例化3)D() 方法默认只调用当前项目(模块)的模型类 如果想调用其他模块必须如下使用D()方法 后台模块 模型类 D(admin,user);4)使用new 可以new 多个 实例化模型四 空模型 所谓空模型 就是实例化时没有任何参数,表示实例化时不知道要实例化哪个表 /实例化空模型 $user=new Model(); /执行原始的Sql $list=$user->query("select * from think_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 充分条件与必要条件教学设计
- 统编版语文四下《第七单元复习》课件
- 动物检疫个人工作总结模版
- 流动商住楼小区重大危险源专项的施工组织方案
- 大学生职业规划大赛《国际商务专业》生涯发展展示
- 老年卧床女性护理
- 普通服务员年终总结模版
- 员工消防培训试题及答案
- 银行投行面试题目及答案
- 一级建造师资格考试试题及答案
- 安全生产重在提升执行力
- 糜烂性胃炎的护理查房
- 摄影测量与遥感课件
- 注塑模具分类及结构组成课件
- 裂解裂化工艺作业培训课件
- 酒店客房技能实训中式铺床
- 工程部管理制度及工程部管理制度(工程公司)
- 基于ZYNQ的时钟同步平台的设计
- 回火炉安全操作规程
- 《输变电工程建设标准强制性条文》施工实施计划
- GB/T 19494.1-2023煤炭机械化采样第1部分:采样方法
评论
0/150
提交评论