## 關于模型(M)
* 模型類通常完成實際的業務邏輯和數據封裝,并返回和格式無關的數據。模型類并不一定要訪問數據庫,你可以對模型層進行更細化的設計和分工,例如把模型層分為邏輯層/服務層/事件層等等。
* 呆錯框架提供的基礎模型類放置在擴展目錄(extend/daicuo)。
* 呆錯框架提供的公共模型類放置在公共目錄(apps/common/loglic)。
## 模型調用
模型類可以使用靜態調用或者實例化調用兩種方式(呆錯的基類模型類通常使用靜態方式調用、公共模型類采用實例化的方式調用),例如:
~~~
// 靜態調用
$user = User::get(1);
$user->name = 'thinkphp';
$user->save();
// 實例化模型
$user = new User;
$user->name= 'thinkphp';
$user->save();
// 使用 Loader 類實例化(單例)
$user = Loader::model('User');
// 或者使用助手函數`model`
$user = model('User');
$user->name= 'thinkphp';
$user->save();
~~~
## 模型分層
除了Model層之外,我們可以根據項目的需要設計和創建其他的模型層。通常情況下,不同的分層模型仍然是繼承系統的\think\Model類或其子類,所以,其基本操作和Model類的操作是一致的。
例如在index模塊的設計中需要區分數據層、邏輯層、服務層等不同的模型層,我們可以在模塊目錄下面創建model、logic和service目錄,把對用戶表的所有模型操作分成三層:
* 數據層:app\\index\\model\\User 用于定義數據相關的自動驗證和自動完成和數據存取接口
* 邏輯層:app\\index\\logic\\User 用于定義用戶相關的業務邏輯
* 服務層:app\\index\\service\\User 用于定義用戶相關的服務接口等
## 助手函數
* model 實例化模型類