ThinkPHP实例化模型的四种方法概述


Posted in PHP onAugust 22, 2014

本文讲述了ThinkPHP实例化模型的四种方法,对于ThinkPHP程序设计来说有非常重要的应用。具体如下:

1、创建一个基础模型:实例化一个系统自带的数据库操作类

   Test.Model.class.php页面代码如下:

class TestModel extends Model{
   
  }

   UserAction.class.php页面代码如下:

function test(){
    $test=M('test');//表示实例化的是自带的Model类,并且传入test值表示操作的是test表
    //等同于$test=new TestModel();
    $test=$test->select();
    print_r($test);//输出test表中所有数据
  } 
 

2、实例化一个自定义模型

   如果数据库操作比较复杂,就需要在自定义的Model类中添加一些自定义的数据库操作方法

   UserModel.class.php页面代码如下:

class UserModel extends Model{
    function pyj(){
      echo 'pengyanjie';
      //其它的一些数据库操作方法
    }
  }

   UserAction.class.php页面代码如下:

function user(){
    $user=D('User');//实例化自定义的数据库操作类
    //等同于$user=new UserModel();
    $user->pyj();//调用User模型中的pyj方法
  }

   或者,你需要实例化一个表,同时呢,实例化一个自己写的自定义的数据库操作类,代码如下:

function love(){
    $love=M('test','UserModel');  
    //$love=new UserModel('test'); 
    $list=$love->select();
    dump($list);
    $love->pyj();
  }

3、实例化一个用户模型

   UserAction.class.php页面代码如下:

function user(){
    $user=new UserModel();//等同于$user=D('User');
    $list=$user->select();
    dump($list);
    echo $user->aa();
  }

   UserModel.class.php页面代码如下:

   该类名user与表名user相对应,所以在UserAction中实例化这个模型的时候就不需要再额外的传表名了,代码如下:

class UserModel extends Model{
    function aa(){
      echo 'pengyanjie';
    }
  }

  这个第三种实例化模型方法与第二种的区别在于:在你的业务逻辑当中,通常情况下会有一些公共的业务逻辑,那你用第二种M('表名','模型名');如M('user','CommonModel')会更方便;

  第三种实例化模型方法适于于针对所操作表的更加复杂的业务逻辑,但是它不需要使用到公共业务逻辑。(它的业务逻辑,针对用户表,它是唯一的,并且不需要在其它模型当中使用)。

4、实例化一个空模型,它并不知道你要实例化操作时用到的是哪张表。

$user=new Model();//等价与$user=M();
  $list=$user->query('select * from think_user'); //使用传统的sql语句的方式,如果这样的话,就必须要加表前缀 
  dump($list);

附:$user=new UserModel();与$user=D('user');的区别:

(1)、D方法可以自动检测模型类,不存在时,它会抛出一个异常。同时对于已实例化过的模型,不会去重复实例化。默认的D方法,只能应用于当前项目下面的模型。

(2)、如果说,我这是前台应用,但是我想实例化后台项目的模型可以用D搞定。

$user=D('admin','user');//会去自动找admin分组下的user模型类

或者:

$user=D('admin.user');

 希望本文所述实例对大家ThinkPHP程序设计有所帮助。

PHP 相关文章推荐
一个可查询所有表的“通用”查询分页类
Oct 09 PHP
网络资源
Oct 09 PHP
PHP MSSQL 存储过程的方法
Dec 24 PHP
一步一步学习PHP(5) 类和对象
Feb 16 PHP
php 删除记录同时删除图片文件的实现代码
May 12 PHP
PHP中对用户身份认证实现两种方法
Jun 04 PHP
PHP批量采集下载美女图片的实现代码
Jun 03 PHP
dedecms函数分享之获取某一栏目所有子栏目
May 19 PHP
PHP魔术方法的使用示例
Jun 23 PHP
PHP图片加水印实现方法
May 06 PHP
PHP基于DOM创建xml文档的方法示例
Feb 08 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 #PHP
ThinkPHP基本的增删查改操作实例教程
Aug 22 #PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 #PHP
ThinkPHP验证码和分页实例教程
Aug 22 #PHP
ThinkPHP文件上传实例教程
Aug 22 #PHP
ThinkPHP中ajax使用实例教程
Aug 22 #PHP
ThinkPHP中的常用查询语言汇总
Aug 22 #PHP
You might like
php中目录,文件操作详谈
2007/03/19 PHP
php set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
ArtEditor富文本编辑器增加表单提交功能
2016/04/18 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
JS常见算法详解
2017/02/28 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
JavaScript实现原型封装轮播图
2020/12/27 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
详解python 发送邮件实例代码
2016/12/22 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
写演讲稿要注意的六件事
2014/01/14 职场文书
群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
股权转让协议范本
2014/12/07 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
怎样写观后感
2015/06/19 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python