# 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 函數
- 無限極分類