热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ThinkPHP具体区别M方法和D方法的技巧

ThinkPHP中M方法和D方法都用于实例化一个模型类,M方法用于高效实例化一个基础模型类,而D方法用于实例化一个用户定义模型类.使用M方法,如果是如下情况,请考虑使用M方法:对数据表

ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类.

使用M方法

如果是如下情况,请考虑使用 M方法:

对数据表进行简单的 CURD 操作而无复杂的业务逻辑时

只有个别的表有较为复杂的业务逻辑时,将 M方法 与实例化 CommonModel 类进行结合使用

M方法 甚至可以简单看着就是对参数表名对应的数据表的操作:

$User = M('User');

使用D方法

如果是如下情况,请考虑使用 D方法:

需要使用 ThinkPHP 模型中一些高级功能如自动验证功能(create()方法中实现)、关联模型等

业务逻辑比较复杂,且涉及的表众多

将业务逻辑定义在了自定义的模型类里面(Lib/Model目录下),而想在操作中实现这些业务逻辑.

另外 D方法 不支持跨项目调用,需要使用:

  1. $User = D('User''Admin');    // 实例化 Admin 项目下面的 User 模型 $User = D('Admin.User');        // 启用了项目分组 

提示:启用了项目分组后,Model 类并不必然对应着项目分组,多个项目组之间共有的模型类,统一放在 Model 目录下,可以直接使用D('ModelName') 实例化,而 D('User.UserInfo') 并不表示 User 一定是一个项目分组,也可以仅仅是对 Model 下文件的一个分类目录,D('User.UserInfo') 实例化的是 User 目录下的 UserInfo 模型类。

总结:M方法 和 D方法 都可以在模型类文件不存在的情况下直接使用的,但显然 M方法 更高效,但要使用模型类里面业务逻辑,就必须使用 D方法.

一个比较形象的比喻就是:M方法 就如一台刚装好操作系统的电脑,只能使用一些基本功能,而 D方法 就如在装好的系统上再安装了一些如 Office、QQ 等应用软件,功能更加强大,同时整个电脑运行速度也变慢了.

以上是对 M方法和D方法区别的一些总结,M方法 和 D方法 要根据实际情况来具体选择.


推荐阅读
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 探讨如何在对话中巧妙地融入情绪,构建丰富的人物形象。本文通过具体案例分析,揭示了有效沟通的关键要素。 ... [详细]
  • 本文详细介绍了如何通过调整手机设置和拍摄技巧,实现高质量的俯拍横屏照片。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • 本文介绍了如何通过扩展 UnityGUI 创建自定义和复合控件,以满足特定的用户界面需求。内容涵盖简单和静态复合控件的实现,并展示了如何创建复杂的 RGB 滑块。 ... [详细]
  • 本文介绍如何在Linux服务器之间使用SCP命令进行文件传输。SCP(Secure Copy Protocol)是一种基于SSH的安全文件传输协议,支持从远程机器复制文件到本地服务器或反之。示例包括从192.168.45.147复制tomcat目录到本地/home路径。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 本文介绍了在Windows Server 2003环境下,使用XAMPP Lite 1.7.1和DotProject 2.1.3时遇到的日历和甘特图中文乱码问题的解决方案。通过修改相关文件和配置,可以有效解决这些问题。 ... [详细]
  • 本文详细介绍了中央电视台电影频道的节目预告,并通过专业工具分析了其加载方式,确保用户能够获取最准确的电视节目信息。 ... [详细]
  • 一加手机的锁屏时间显示设计引起用户讨论,尤其是红色数字1在特定情况下容易被忽略,导致误读时间。 ... [详细]
  • Python实现照片磨皮效果
    本文介绍如何使用Python和OpenCV库来实现照片的磨皮效果,使图片更加平滑并提升整体美感。 ... [详细]
  • 刘备三顾茅庐的故事流传千古,象征着诚心诚意地邀请贤才。公元207年,47岁的刘备聘请了27岁的诸葛亮,这一段佳话不仅展现了古代君主求贤若渴的精神,也为现代企业招聘管理提供了宝贵的启示。 ... [详细]
  • 本文详细介绍了如何在CentOS 7操作系统上安装和配置Grafana,包括必要的依赖项安装、插件管理以及服务启动等步骤。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
author-avatar
牵绊2502897683
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有