ThinkPHP中M方法与D方法有什么区别

摘要:
在ThinkPHP中,M方法和D方法都用于实例化模型类。M方法用于有效地实例化基本模型类,而D方法用于实例化用户定义的模型类。多个项目组共享的模型类统一放置在模型目录中,可以使用D直接实例化。虽然D并不意味着用户必须是项目组,但它也可以只是模型下文件的类别目录。D实例化User目录下的UserInfo模型类。以上是M方法和D方法之间的差异总结。应根据实际情况选择M法和D法。

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

使用M方法

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

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

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

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

$User = M('User');

   

使用D方法

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

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

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

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

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

$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方法 要根据实际情况来具体选择。

免责声明:文章转载自《ThinkPHP中M方法与D方法有什么区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇k8s中节点级别的日志OpenCV图像旋转算法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

fastJson与jackson性能对比

转载:https://blog.csdn.net/u013433821/article/details/82905222最近项目用到fastJson和jackson,为了决定到底弃用哪个,随手写了个测试看看到底谁的性能更胜一筹。 看到过很多对比的帖子,大多数结果是fastJson性能高于jackson,可偏偏像SpringMVC这样成熟的框架默认也采用的j...

什么是ICD文件

ICD就是IED Capability Description的简称,中文为IED能力描述文件。其中 IED是Intelligent Electronic Device的简称,是智能电子设备 智能电子设备,全称:Intelligent Electronic Device,简称为IED。IEC61850标准对IED定义如下:“由一个或多个处理器组成,具有从外...

博雅大数据机器学习十讲第三讲

点到平面的距离 直线方程:(w_1x_1+w_2x_2+w_0 = 0) 点到直线距离(d = frac {|w_1x_1^{'}+w_2x_2^{'}+w_0|}{sqrt{w^2_1+w^2_2}}) 欧式空间超平面:(w_1x_1+w_2x_2+...+w_dx_d+w_0 = 0) 点到超平面距离: [d = frac {|w_1x_1^{'...

嵌套For循环性能优化案例

1 案例描述 某日,在JavaEye上看到一道面试题,题目是这样的:请对以下的代码进行优化 Java代码   for (int i = 0; i < 1000; i++)       for (int j = 0; j < 100; j++)           for (int k = 0; k < 10; k++)       ...

R语言逻辑回归和泊松回归模型对发生交通事故概率建模

  ​ 原文链接 http://tecdat.cn/?p=14139   我们已经看到了如何考虑风险敞口,计算包含风险敞口的多个数量(经验均值和经验方差)的非参数估计量。让我们看看如果要对二项式变量建模。 这里的模型如下: 未观察到​该期间的索赔数量 ​ 索偿的数量  ​  ​ 考虑一种情况,其中关注变量不是索偿的数量,而仅仅是索偿发生的标...

逻辑回归模型预测股票涨跌

http://www.cnblogs.com/lafengdatascientist/p/5567038.html 逻辑回归模型预测股票涨跌 逻辑回归是一个分类器,其基本思想可以概括为:对于一个二分类(0~1)问题,若P(Y=1/X)>0.5则归为1类,若P(Y=1/X)<0.5,则归为0类。 一、模型概述 1、Sigmoid函数 为了具象化...