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上传文件的增强函数
Jul 21 PHP
php读取纯真ip数据库使用示例
Jan 26 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
ThinkPHP的L方法使用简介
Jun 18 PHP
php实现的常见排序算法汇总
Sep 08 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
Symfony2创建页面实例详解
Mar 18 PHP
php好代码风格的阶段性总结
Jun 25 PHP
php基于curl实现随机ip地址抓取内容的方法
Oct 11 PHP
php实现产品加入购物车功能(1)
Jul 23 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
如何用PHP实现多线程编程
May 26 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与Java进行通信的实现方法
2013/10/21 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
Node.js 实现抢票小工具 & 短信通知提醒功能
2019/10/22 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
对于Python装饰器使用的一些建议
2015/06/03 Python
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
python在不同层级目录import模块的方法
2016/01/31 Python
Django 前后台的数据传递的方法
2017/08/08 Python
Sanic框架配置操作分析
2018/07/17 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
Shell如何接收变量输入
2016/08/06 面试题
超市开学活动方案
2014/03/01 职场文书
合作意向书格式及范文
2014/03/31 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers