thinkphp中m方法与d方法的区别:1、m方法不需要创建模型类文件,而d方法必须有创建模型类;2、d方法会实例化具体的模型类,m方法实例化不需要加载具体的模型类。
本文操作环境:windows10系统、thinkphp v5.1版、dell g3电脑。
thinkphp中m方法与d方法的区别是什么
d方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化系统的\think\model基类,同时对于已实例化过的模型,不会重复去实例化。
d方法实例化模型类的时候通常是实例化某个具体的模型类,如果你仅仅是对数据表进行基本的curd操作的话,使用m方法实例化的话,由于不需要加载具体的模型类,所以性能会更高。
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方法 要根据实际情况来具体选择。
推荐学习:《最新的10个thinkphp视频教程》
以上就是thinkphp中m方法与d方法的区别是什么的详细内容。