ThinkPHP3.1之D方法实例详解


Posted in PHP onJune 20, 2014

D方法应该是用的比较多的方法了,用于实例化自定义模型类,是ThinkPHP框架对Model类实例化的一种封装,并实现了单例模式,支持跨项目和分组调用,调用格式如下:

D('[项目://][分组/]模型','模型层名称')

方法的返回值是实例化的模型对象。

D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化Model基类,同时对于已实例化过的模型,不会重复去实例化。

D方法最常用的用法就是实例化当前项目的某个自定义模型,例如:

// 实例化User模型
$User = D('User');

会导入当前项目下面的Lib/Model/UserModel.class.php文件,然后实例化UserModel类,所以,实际上的代码可能和下面的等效:

import('@.Model.UserModel');
$User = new UserModel();

但是如果使用D方法的话,如果这个UserModel类不存在,则会自动调用

new Model('User');

并且第二次调用的时候无需再次实例化,可以减少一定的对象实例化开销。

D方法可以支持跨分组和项目实例化模型,例如:

//实例化Admin项目的User模型
D('Admin://User')
 //实例化Admin分组的User模型
D('Admin/User')

注意:要实现跨项目调用模型的话,必须确保两个项目的目录结构是并列的。

ThinkPHP自3.1版本开始,由于增加了分层模型的支持,所以D方法也可以实例化其他的模型,例如:

// 实例化UserService类
$User = D('User','Service');
 // 实例化UserLogic类
$User = D('User','Logic');

而D('User','Service');会导入Lib/Service/UserService.class.php,并实例化,等效于下面的代码:

import('@.Service.UserService');
$User = new UserSerivce();
PHP 相关文章推荐
使用 MySQL Date/Time 类型
Mar 26 PHP
IP138 IP地址查询小偷实现代码
Feb 15 PHP
PHP执行linux系统命令的常用函数使用说明
Apr 27 PHP
PHP 获取客户端真实IP地址多种方法小结
May 15 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
php中定义网站根目录的常用方法
Aug 08 PHP
php 操作符与控制结构
Mar 07 PHP
克隆一个新项目的快捷方式
Apr 10 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
php中异常处理方法小结
Jan 09 PHP
php实现httpRequest的方法
Mar 13 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
php写的AES加密解密类分享
Jun 20 #PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 #PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
Jun 20 #PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 #PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 #PHP
PHP扩展CURL的用法详解
Jun 20 #PHP
教你如何解密 “ PHP 神盾解密工具 ”
Jun 20 #PHP
You might like
PHP代码优化的53个细节
2014/03/03 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
js简单网速测试方法完整实例
2015/12/15 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
nodejs实现简单的gulp打包
2017/12/21 NodeJs
JS装饰器函数用法总结
2018/04/21 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
TF-IDF算法解析与Python实现方法详解
2017/11/16 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
美国最大网上鞋店:Zappos
2016/07/25 全球购物
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
个人批评与自我批评发言稿
2014/09/28 职场文书
避暑山庄导游词
2015/02/04 职场文书
小学生交通安全寄语
2015/02/27 职场文书
地心历险记观后感
2015/06/15 职场文书