#### thinkphp5模型三層結構邏輯層服務層數據層
* * * * *
thinkphp5.0官方手冊大致講解了MVC三層結構以及模型分層:邏輯層、服務層、數據層,官網上是這樣講的:
ThinkPHP支持模型的分層 ,除了Model層之外,我們可以根據項目的需要設計和創建其他的模型層。
通常情況下,不同的分層模型仍然是繼承系統的\think\Model類或其子類,所以,其基本操作和Model類的操作是一致的。
例如,在Home模塊的設計中需要區分數據層、邏輯層、服務層等不同的模型層,我們可以在模塊目錄下面創建model、logic和service目錄,把對用戶表的所有模型操作分成三層:
1. 數據層:app\index\model\User 用于定義數據相關的自動驗證和自動完成和數據存取接口
2. 邏輯層:app\index\logic\User 用于定義用戶相關的業務邏輯
3. 服務層:app\index\service\User 用于定義用戶相關的服務接口等
三個模型層的定義如下:
app\index\model\User.php
~~~
namespace app\index\model;
use think\Model;
class User extends Model
{
}
~~~
實例化方法:`\think\Loader::model('User')`
Logic類:app\index\logic\User.php
~~~
amespace app\index\logic;
use think\Model;
class User extends Model
{
}
~~~
實例化方法:`\think\Loader::model('User','logic');`
Api類:app\index\api\User.php
~~~
namespace app\index\api;
use think\Model;
class User extends Model
{
}
~~~
實例化方法:`\think\Loader::model('User','api');`
這只是簡單地說了這三個層如何聲明以及實例化,這讓很多想弄明白如何區分這三個層,他們存在的目的究竟是什么?在這三個層具體要寫什么代碼?對此表示不理解。
其實,官方已經明確說明了,我們沒有必要非要硬性區分三個層,我們完全可以全寫在一個Model中。
如果想分開寫,你記住:
* Model 負責模型定義 比如聲明一個User字段自動驗證的內容。
* Logic 這是一個邏輯層,說白了就是業務邏輯性的功能寫在這個類里。
* Service 這個其實就是負責數據庫交互的。
- 目錄
- 5.0.10環境配置
- 5.0.10控制器模型對象
- 5.0.10模型初始化
- 5.0.10定義數據對象
- 5.0.10創建數據對象data()方法
- 5.0.10創建數據對象-setAttr方法
- 5.0.10創建數據對象__set()方法
- 5.0.10查詢數據對象getData()
- 實例
- 5.0.10保存數據save()方法
- 5.0.10保存數據saveAll()
- 5.0.10更新數據save()
- 5.0.10批量更新數據saveAll()
- 5.0.10刪除數據delete()
- 5.0.10刪除數據destroy()
- 5.0.10traits詳解
- ThinkPHP 5.0 速查表
- 注釋
- 環境變量配置
- Model分層
- MVC 邏輯服務數據
- Model分層及多對多關聯的建立
- 控制器調用邏輯層
- Session
- 子域名session共享
- 系統錯誤
- 版本錯誤
- 返回錯誤
- Token令牌及身份識別
- 關聯查詢
- 安裝
- Git安裝
- Composer
- 擴展
- Composer類
- 非Composer類
- 引用第三方庫
- 自定義命令行
- 計劃任務
- 調試
- 調試模式
- 監聽SQL
- 數據庫調試
- 單元測試
- 初始化
- 控制器初始化
- 模型初始化
- 數據緩存
- 實戰
- 版本升級
- 從V5.0.17升級到V5.0.18