ThinkPHP-实例化模型的4种方式

作者: 坎肩儿 分类: ThinkPHP框架 发布时间: 2012-03-29 13:27

  提到ThinkPHP的实例化模型,这里介绍4种方式,或许方式很多,但是目前通过视频就学到了4种,现在分享出来:

  一、ThinkPHP中提供了4种实例化模型的方法
  
  1、创建一个基础模型(实例化一个系统自带的数据库操作类)
  
  李老师的话:我们可以不用自己去定义一个数据库操作类,ThinkPHP会帮我们自动的去找到数据库当中的这个表,并且将表中的字段读取出来。我们直接操作这个对象,就是操作的这张表。
  
  $user=newModel(‘表名’);
  
  注意:Model里面的表名,如果表名是:think_users,那么表名就是:user或者Users
  
  如果表名是:think_users_message,那么表名就是:users_message或者usersMessage
  
  如图:
  
  上图中的:$user=newMode(‘users’);等价于:$user=M(‘users’);
  
  即,newMode等于M
  
  2、需要实例化一个表,同时实例化一个自己写的自定义数据库操作类(自定义实例化一个已存在的数据表的时候,同时封装一个自定义的模型进来)
  
   1)、在项目目录/Lib/Model/下,新建:CommonModel.class.php
  
   2)、CommonModel.class.php文件里面,写入:
  
   3)、在方法里面:,第一行与第二行注释的,实现的功能一致。
  
  注:M方法2.0与3.0是有区别的。
  
  另外,M(‘CommonModel:users’),前面的CommonModel不能与数据库名相同 
  
   4)、执行后,除了遍历出数据库users表的数据外,还会将CommonModel.class.php里面的aa函数的内容也输出出来,实现这个功能的代码:$user->aa();
  
  3、实例化一个用户自定义的模型,首先需要手动创建一个模型,users(已存在的表),可以针对这张表来起上一个自定义模型,在自定义模型当中,可以封装TP为我们提供的一些高级功能,还可以封装一些自定义方法来实现更加复杂的业务逻辑。
  
   1)、在项目目录/Lib/Model/下,新建:UsersModel.class.php,其中注意的是,模型名:UsersModel,里面的Users,是数据库已存在的一张表名。
  
   2)、在UsersModel.class.php里面写入:,测试代码。
  
   3)、方法里面:,这样即可。
  
  注:第4行的$user=newUsersModel();与下面一行的$user=D(‘users’);是等效的。
  
  D方法,是TP系统封装好的,后面的参数其实就是模型的名称里面Model前面的部分,也就是数据表的名称。
  
  上面的第3中方法,适用于针对所操作的数据表的更加复杂的业务逻辑,但是它不需要使用到公共的业务逻辑,它的业务逻针对用户表,他是唯一的,在这种情况下面,我们就使用自定义模型。
  
  4、实例化一个空模型,它并不知道,你要实例化操作时的是哪种表。也就是传统的使用SQL语句的方式。
  
  只需要在方法里面,写入:,其中的第1行与第2行,是等效的。
  
  第3行里面,query后面跟的就是普通的SQL语句,这里面的数据表名要加前缀。
  
  D方法,可以自动检测模型类,不存在时会抛出异常,同时对于已实例化过的模型会去实例化。
  
  默认的D方法,只能支持调用当前项目或者应用下面的模型。

为便于阅读,现在上传PDF版本:【PDF版 点击查看

一条评论
  • 郑凯彬

    3月 29, 2012 3:27 下午

    来你这里看看,还不错,来我博客看看,交流交流!