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 相关文章推荐
社区(php&&mysql)六
Oct 09 PHP
简单PHP上传图片、删除图片实现代码
May 12 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
Jul 03 PHP
php 强制下载文件实现代码
Oct 28 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
PHP 极验验证码实例讲解
Sep 29 PHP
php实现跨域提交form表单的方法【2种方法】
Oct 17 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
PHP实现图片的等比缩放和Logo水印功能示例
May 04 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
Oct 23 PHP
Laravel 错误提示本地化的实现
Oct 22 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使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
JavaScript 特殊字符
2007/04/05 Javascript
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
2014/06/25 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
浅谈python字符串方法的简单使用
2016/07/18 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
Python算法之图的遍历
2017/11/16 Python
关于Python的一些学习总结
2018/05/25 Python
python 将md5转为16字节的方法
2018/05/29 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
基于Pytorch SSD模型分析
2020/02/18 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
如何在C# winform中异步调用web services
2015/09/21 面试题
行政助理岗位职责范文
2013/12/03 职场文书
学生生病请假条范文
2014/02/16 职场文书
《在家里》教后反思
2014/03/01 职场文书
文明生主要事迹
2014/05/25 职场文书
python中的plt.cm.Paired用法说明
2021/05/31 Python
Elasticsearch 基本查询和组合查询
2022/04/19 Python