日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

Thinkphp框架中D()和M()的区别

發布時間:2025/4/14 php 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Thinkphp框架中D()和M()的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ThinkPHP中實例化對象M()和D()的區別?ThinkPHP如何實例化對象?
在實例化的過程中,經常使用D方法和M方法,這兩個方法的區別在于M方法實例化模型無需用戶為每個數據表定義模型類,如果D方法沒有找到定義的模型類,則會自動調用M方法。
通俗一點說:
M實例化參數是數據庫的表名。
D實例化的是你自己在Model文件夾下面建立的模型文件


例如:$user = new UserModel(); 等價于$user = D('user'); 如果實例化的是一個空模型 例如 $Demo = new Model(); 那么它等價于 $Demo = M();


------------------------------------------------------------------------
D和M的區別主要在于:
M方法不需要創建模型類文件,M方法不會讀取模型類,所以默認情況下自動驗證是無效的,但是可以通過動態賦值的方式實現
而D方法必須有創建模型類。

我們可以用下面兩種方法去創建一個數據表的映射對象
第一種:$Test = D('Test')
第二種:$Test = new Model('Test')
雖然這兩種都可以對數據進行select,insert,delete,udpate操作,在
數據驗證上有很大的不同,用第一種方式實例一個模型就會有數據檢查功能,如果 title 沒有填寫的話就會提示 “請輸入標題” (這個是tp提供的一個自動驗證功能,當然也需要在相應的model中定義好驗證條件);

如果用第二種就沒有了·····

還有1個區別就是當用了$trueTableName后,必須用$test=d('test'),表示查詢的是test表,

如果用的是$test=m('test'),那么都表示查詢的數據邊是think_test。

thinkphp2.0版本測試有如此上面的問題
-----------------------------------------------------------------------------------------------
通俗點說:
D就是實例化一個基于Model文件的Model。
M則是通過直接實例化Model方法(ThinkPHP基類)來動態的實例化一個Model對象,即使這個對應的Model文件不存在
============================================================================
A快速實例化Action類庫
B執行行為類
C配置參數存取方法
D快速實例化Model類庫
F快速簡單文本數據存取方法
L 語言參數存取方法
M快速高性能實例化模型
R快速遠程調用Action類方法
S快速緩存存取方法
U URL動態生成和重定向方法
W 快速Widget輸出方法
?
D函數實例化的是你當前項目的Lib/Model下面的模塊。
如果該模塊不存在的話,直接返回實例化Model的對象(意義就與M()函數相同)。
而M只返回,實例化Model的對象。它的$name參數作為數據庫的表名來處理對數據庫的操作。

轉載于:https://www.cnblogs.com/o-ye/p/6095986.html

總結

以上是生活随笔為你收集整理的Thinkphp框架中D()和M()的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。