模型實例化 thinkphp

模型實例化

當定義了模型之後,需要在操作中將模型實例化才能具體實現模型中的業務邏輯。

不同的數據業務規則會有不同的模型定義,而在實例化模型的時候也可能不同。ThinkPHP 支持如下幾種實例化模型:

  1. 實例化基礎模型類
  2. 實例化其他模型類
  3. 實例化用戶自定義模型類
  4. 實例化空模型類

實例化基礎模型類

ThinkPHP支持在沒有定義任何模型的時候,實例化一個基礎模型類來進行簡單的 CURD 操作:

$User = new Model('User');

或者使用 M 快捷方法:

$User = M('User'); // 下面是其他一些對 user 表的操作 $User->select();

上面兩個方法等同,參數爲去掉前綴的表名(User),且首字母大寫,關於模型命名參見《ThinkPHP 模型命名規範》。

這種方法只定義了基礎模型,簡單高效,並且支持跨項目調用。缺點是因爲沒有自定義的模型類,因此無法寫入相關的業務邏輯,只能完成基本的 CURD 操作。所以如果只是基本的 CURD 操作,建議實例化此種模型類型。

實例化其他模型類

實例化基礎模型類,只能完成基本的 CURD 操作。如果只是需要擴展一些通用的邏輯,那麼就可以實例化其他模型類:

$User = new CommonModel('User');

或者使用 M 快捷方法:

$User = M('User', 'CommonModel');

CommonModel(對應 Lib/Model/CommonModel.class.php 文件)類必須繼承 Model 類,如果沒有定義別名導入的話,放在項目 Lib/Model 目錄下,系統自動加載。我們可以 在CommonModel 類裏面定義一些通用的邏輯方法,就可以省去爲每個數據表定義具體的模型類。

如果項目涉及的表非常多,而只有個別表有一些複雜的業務邏輯需要封裝,那麼上面這兩種模型實例化方式相結合是一個不錯的選擇。

實例化用戶定義的模型類

如果項目有較多的表需要實現邏輯業務,而不僅僅是簡單的 CURD 操作,那就需要實例化自定義的模型類,如 UserModel(用戶模型類)、GoodsModel(商品模型類)等。我們在定義的模型類裏面實現邏輯業務,而在操作裏面實例化該模型:

$User = new UserModel();

或者使用 D 快捷方法:

$User = D('User');

當使用到模型裏面的一些高級功能如 自動驗證填充 等,就需要用到 D 實例化模型方法而不能用 M 方法。

默認的 D方法 只能支持調用當前項目的模型,如果需要跨項目調用,需要使用:

$User = D('User', 'Admin'); // 實例化 Admin 項目下面的 User 模型 $User = D('Admin.User'); // 啓用了項目分組

 

實例化空模型類

如果需要使用原生 SQL ,需要實例化一個空模型:

$Model = new Model(); // 執行原生 SQL 語句 $Model->query('SELECT * FROM think_user');

或者使用 M 快捷方法:

$User = M();

提示

本文介紹的模型定義與實例化偏向於理論,但在後面的開發中,對數據的操作都要用到模型的實例化,可根據項目實際情況採取不同的模型實例化方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章