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 相关文章推荐
刚才在简化php的库,结果发现很多东西
Dec 31 PHP
PHP安全技术之 实现php基本安全
Sep 04 PHP
PHP动态创建Web站点的方法
Aug 14 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
PHP输出缓冲控制Output Control系列函数详解
Jul 02 PHP
如何使用PHP对网站验证码进行破解
Sep 17 PHP
PHP和C#可共用的可逆加密算法详解
Oct 26 PHP
php将数组存储为文本文件方法汇总
Oct 28 PHP
PHP实现唤起微信支付功能
Feb 18 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
PHP Web表单生成器案例分析
Jun 02 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
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
两种方法解决javascript url post 特殊字符转义 + & #
2016/04/13 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
jQuery使用each方法与for语句遍历数组示例
2016/06/16 Javascript
JS新包管理工具yarn和npm的对比与使用入门
2016/12/09 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
js实现简单的打印表格
2020/01/15 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
Python 描述符(Descriptor)入门
2016/11/20 Python
Python中常用信号signal类型实例
2018/01/25 Python
Python绘制并保存指定大小图像的方法
2019/01/10 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
Python是怎样处理json模块的
2020/07/16 Python
Pycharm调试程序技巧小结
2020/08/08 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
酒店司机岗位职责
2013/12/14 职场文书
小学生安全责任书
2014/07/25 职场文书
农村婚庆主持词
2015/06/29 职场文书
JavaScript原型链详解
2021/11/07 Javascript