在Thinkphp有四種不同的方法實例化對象,new方法、D方法、M方法、空模型方法,比較常用的是D方法和M方法。本文大都是官方手冊東西,自己稍微做了下總結。
New方法
new方法是最好理解的一種方法,就是普通的實例化類,參數可選,依次是表名、表前綴、數據庫連接信息,大多數情況下不需要傳參。
new /Home/Model/NewModel('new','think_','DB_CONFIG');
D方法
D方法Thingkphp(下面簡稱TP)系統提供的一個實例化類的快捷方法,通過D方法我們可以快速的實例化一個類并使用。
- //實例化模型
- $User = D('User');
- // 相當于
- $User = new /Home/Model/UserModel();
- // 執行具體的數據操作
- $User->select();
- 當 /Home/Model/UserModel 類不存在的時候,D函數會嘗試實例化公共模塊下面的 /Common/Model/UserModel 類,如果還不存在的話則會實例化系統的/Think/Model基類,這是一點值得注意的地方。
M方法:
D方法實例化模型類的時候通常是實例化某個具體的模型類,如果你僅僅是對數據表進行基本的CURD操作的話,使用M方法實例化的話,由于不需要加載具體的模型類,所以性能會更高。
- // 使用M方法實例化
- $User = M('User');
- // 和下面用法等效
- $User = new /Think/Model('User');
- // 執行其他的數據操作$User->select();
如果你的模型類有自己的業務邏輯,M方法是無法支持的,就算是你已經定義了具體的模型類,M方法實例化的時候是會直接忽略。
實例化空模型類
如果你僅僅是使用原生SQL查詢的話,不需要使用額外的模型類,實例化一個空模型類即可進行操作了
- //實例化空模型
- $Model = new Model();
- //或者使用M快捷方法是等效的
- $Model = M();
- //進行原生的SQL查詢
- $Model->query('SELECT * FROM think_user WHERE status = 1');
總結:我們在實例化的過程中,經常使用D方法和M方法,這兩個方法的區別在于M方法實例化模型無需用戶為每個數據表定義模型類,如果D方法沒有找到定義的模型類,則會自動調用M方法,M方法會直接忽略自定義的具體模型類。
新聞熱點
疑難解答
圖片精選