# ThinkPHP函数详解:D函数
[TOC]
D函数用于实例化自定义模型类,是ThinkPHP框架对Model类实例化的一种封装,并实现了单例模式,支持跨模块调用,调用格式如下:
>[success] **[资源://][模块/]模型**
方法的返回值是实例化的模型对象。
D函数可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化Model基类,同时对于已实例化过的模型,不会重复去实例化。
## 实例化当前项目的某个自定义模型
~~~
$User = D('User');
~~~
会导入当前模块下面的**APP_NAME/Model/UserModel.class.php**文件,然后实例化UserModel类,所以,实际上的代码可能和下面的等效:
~~~
import('@.Model.UserModel');
$User = new UserModel();
~~~
但是如果使用D方法的话,如果这个UserModel类不存在,则会自动调用
~~~
new Model('User');
~~~
并且第二次调用的时候无需再次实例化,可以减少一定的对象实例化开销。
## D方法可以支持跨模块实例化模型
~~~
D('Admin/User');
~~~
实例化Admin模块的User模型,会导入Admin模块下面的**APP_PATH/Admin/Model/UserModel.class.php**文件,并进行实例化返回。
## 实例化非模型命名空间下的数据逻辑层
### 当前模块
~~~
// 实例化UserService类 文件位于当前模块下的/Service/UserService.class.php
$User = D('User','Service');
// 实例化UserLogic类 文件位于当前模块下的/Logic/UserLogic.class.php
$User = D('User','Logic');
~~~
会导入当前模块下/Service/UserService.class.php,并实例化,等效于下面的代码:
~~~
import('@.Service.UserService');
$User = new UserSerivce();
~~~
### 跨模块实例化模型
~~~
// 实例化UserService类 文件位于Admin/Service/UserService.class.php
$User = D('Admin/User','Service');
// 实例化UserLogic类 文件位于当Admin/Logic/UserLogic.class.php
$User = D('Admin/User','Logic');
~~~
- 开始
- PHP配置参数的介绍
- PHP代码优化
- php中的命名空间
- PHP文件上传类
- PHP文件下载
- PHP验证码
- ThinkPHP3.2 框架函数
- A函数:实例化控制器
- C函数:设置和获取配置参数
- D函数:实例化模型
- F 函数:快速缓存设置和存取
- M函数:例化模型(无需定义模型类)
- L函数:设置和获取语言变量
- S 函数:缓存设置和存取
- R函数:直接调用控制器的操作方法
- U函数:URL地址生成
- I 函数:安全获取系统输入变量
- 日志
- ThinkPHP在关闭调试模式导致函数被缓存
- MySQL触发器使用时遇到的坑
- PHP常用函数
- 五一回家记录
- window的PHP开发(wamp)下安装redis扩展
- Windows下安装使用Redis
- PHP7新特性
- 利用 phpmailer 类实现队列发送邮件
- GD 库图像处理
- 检测 PHP 模块是否开启
- GD 库操作一般步骤
- GD 库绘画改变字体
- GD 绘制验证码
- GD 缩略图实现
- GD 绘制水印
- 日期时间函数库
- PHP 函数
- 无限极分类