# 模型實例化
**為方便框架的后續升級,thinkcmf與thinkphp框架模型操作方法完全一致。
所以這里是支持thinkphp原生的M方法和D方法來實例化模型;**
實例化模型的好處:
可以實現自動完成,自動校驗功能。使用模型封裝的方法。分離M層和C層;
## M方法:
M(['模型名'],['數據表前綴'],['數據庫連接信息']);
```php
//實例化模型
$User=M('User');
// 執行具體的數據操作
$User->select();
```
M方法僅支持基本的CURD操作;但是性能會較D方法高。
*如果你的模型類有自己的業務邏輯,M方法是無法支持的,就算是你已經定義了具體的模型類,M方法實例化的時候是會直接忽略。*
**M方法的特殊用法:**
$model=M();//實例化空模型;
$model->query('select * from cmf_user where id=1');//使用原生sql語句進行查詢id為1的用戶
## D方法:
假設當前模塊為Home;
D('User');D('Home/User');是一樣的;
如果在Linux環境下面,一定要注意D方法實例化的時候的模型名稱的大小寫。
D方法可以自動檢測模型類,如果存在自定義的模型類,則實例化自定義模型類,如果不存在,則會實例化系統的\\Think\\Model基類,同時對于已實例化過的模型,不會重復實例化。
D方法的參數就是模型的名稱,并且和模型類的大小寫定義是一致的,例如:
參數 實例化的模型文件
User 對應的模型類文件的 \Home\\Model\\UserModel.class.php
UserType 對應的模型類文件的 \\Home\\Model\\UserTypeModel.class.php
用法示例:
```php
//實例化模型
$User = D('User');
// 相當于 $User = new \\Home\\Model\\UserModel();
// 執行具體的數據操作
$User->select();
//$User->diy_select();//diy_select方法是您在\\Home\\Model\\UserModel.class.php中自定義的方法。
```
*當 \\Home\\Model\\UserModel 類不存在的時候,D函數會嘗試實例化公共模塊下面的 \\Common\\Model\\UserModel 類*
D方法還可以支持跨模塊調用,需要使用:
```php
//實例化Admin模塊的User模型
D('Admin/User');
//實例化Extend擴展命名空間下的Info模型
D('Extend://Editor/Info');
```
*注意:跨模塊實例化模型類的時候 不支持自動加載公共模塊的模型類*
#### M方法和D方法的區別
1. M方法不用加載具體模型類效率更高。但僅能實現基礎的CURD;
2. D方法會先實例化具體的模型類,找不到后自動調用M方法來實例化模型類
*名詞解釋*
1. CURD(Create,Update,Read,Delete),數據庫的增刪查改操作
*參考文獻:*
1. http://www.hmoore.net/manual/thinkphp/1729
- 介紹
- 序言
- 關于ThinkCMF
- 關于BootStrap
- 基礎
- 開發規范
- 調試模式
- 應用
- 如何獲取
- 環境要求
- 安裝使用
- 配置
- 控制器
- URL生成
- AJAX返回
- 跳轉和重定向
- 輸入變量
- 請求類型
- 空操作
- 空控制器
- 視圖
- 模板定義
- 模板主題
- 模板賦值
- 獲取內容
- 模板渲染
- 模型
- 模型定義
- 模型實例化
- 連接數據庫
- 更多模型用法
- 系統函數
- 生成評論組件
- 添加鉤子
- URL美化函數
- 獲取文件相對路徑
- 用戶權限驗證
- 字符串解密
- 字符串加密
- 獲取當前語言包
- 手機驗證碼驗證
- 檢查用戶操作
- 圖片驗證碼驗證
- 清除系統緩存
- 文本內容分頁
- 密碼比較
- 獲取文件訪問地址
- 獲取CMF設置
- 獲取評論
- 獲取當前登錄管理員id
- 獲取當前主題名
- 獲取當前登錄用戶信息
- 獲取當前登錄用戶ID
- 獲取收藏安全Key
- 獲取文件下載鏈接
- 獲取文件擴展名
- 獲取系統域名
- 獲取圖片預覽地址
- 獲取圖片訪問地址
- 生成前臺導航
- 獲取插件類名
- 獲取插件配置
- 獲取URL相對路徑
- 獲取前臺模板根目錄地址
- 獲取用戶頭像地址
- 獲取用戶列表
- 獲取廣告
- 獲取幻燈片
- 判斷是否為手機訪問
- 獲取HTML內容中的圖片
- 判斷用戶是否登錄
- 判斷是否為微信訪問
- 解析字符串標簽
- 生成密碼
- 插件URL生成
- 生成隨意字符串
- 遍歷目錄
- 發送郵件
- 更新動態配置
- 設置系統配置
- 更新當前登錄用戶
- 系統擴展
- 應用開發流程
- 后臺隱藏的后臺菜單管理功能
- 幾個重要基類
- 引入第三方庫
- 模板
- 基礎
- 全局變量
- 模板結構
- 模板注釋
- 模板常量
- 前臺模板多語言
- 變量輸出
- 使用函數
- 默認值輸出
- 使用運算符
- 三元運算
- 包含文件
- 原樣輸出
- 模板標簽
- tc\_include
- foreach
- volist
- php
- if else
- for
- switch
- 比較標簽
- 范圍判斷標簽
- Present標簽
- Empty標簽
- Defined標簽
- Assign標簽
- Define標簽
- 標簽嵌套
- 前端組件
- js-count-btn
- js-favorite-btn
- js-ajax-dialog-btn
- js-ajax-delete
- js-date
- js-datetime
- js-ajax-form
- 公共模板
- 菜單導航制作
- 幻燈片制作
- 廣告位制作
- 友情鏈接制作
- 添加留言控件
- 如何收藏
- 點贊組件
- 最新評論組件制作
- 最新加入組件制作
- 本站用戶登錄模板制作
- 本站用戶注冊模板制作
- 忘記密碼模板制作
- 密碼重置模板制作
- 評論組件
- 進階
- 七牛圖片處理
- 門戶應用
- 基礎
- 主程序結構
- 模板結構
- 函數庫
- 指定分類下的所有子分類
- 獲取面包屑數據
- 查詢文章列表,不分頁
- 獲取指定ID的文章
- 獲取指定ID的分類
- 獲取分類列表
- 獲取指定分類下的子分類
- 獲取文章列表,分頁
- 獲取指定 ID 的頁面
- 獲取指定分類下所有文章,包括子類的
- 獲取指定分類下所有文章,包括子類的,分頁
- 門戶模板制作
- 文章列表頁制作
- 文章內頁制作
- 頁面制作
- 獲取文章的各種方式
- 熱門文章組件制作
- seo優化
- 文章相冊制作
- 文章列表推薦功能制作
- 文章列表置頂功能制作
- 插件
- 插件鉤子
- 插件配置文件
- 插件類主文件
- 插件開發流程
- 插件控制器
- 插件數據庫模型
- 插件后臺管理控制器
- 插件多語言
- 后臺管理
- SMTP配置
- 忘記后臺密碼?
- 后臺地址是啥?
- 后臺菜單管理
- 管理員權限管理
- 第三方登錄配置
- 專題
- 多語言開發
- Restful Api
- 數據分頁
- 緩存
- 安全
- SESSION支持
- Cookie支持
- 文件上傳
- 驗證碼
- 部署
- 遷移到正式環境
- URL重寫