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版(5)
Oct 09 PHP
php在文件指定行中写入代码的方法
May 23 PHP
php获取用户IPv4或IPv6地址的代码
Nov 15 PHP
解析php类的注册与自动加载
Jul 05 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 PHP
php字符串分割函数用法实例
Mar 17 PHP
php结合web uploader插件实现分片上传文件
May 10 PHP
mac系统下为 php 添加 pcntl 扩展
Aug 28 PHP
详谈PHP面向对象中常用的关键字和魔术方法
Feb 04 PHP
PHP实现图片批量打包下载功能
Mar 01 PHP
laravel 实现用户登录注销并限制功能
Oct 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中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
2015/04/01 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
Javascript中的数学函数集合
2007/05/08 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
比较搞笑的js陷阱题
2010/02/07 Javascript
深入理解Javascript闭包 新手版
2010/12/28 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
JS计算输出100元钱买100只鸡问题的解决方法
2018/01/04 Javascript
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
python字典基本操作实例分析
2015/07/11 Python
django定期执行任务(实例讲解)
2017/11/03 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
python实现五子棋小程序
2019/06/18 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
pytorch AvgPool2d函数使用详解
2020/01/03 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
即将毕业大学生自荐信
2014/01/24 职场文书
婚礼司仪主持词
2014/03/14 职场文书
招商引资工作汇报
2014/10/28 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
盗窃案辩护词
2015/05/21 职场文书
bat批处理之字符串操作的实现
2022/03/16 Python