在 MVC 中應該如何建立模型?
在 MVC 中,模型代表應用程式的商業邏輯和資料。它封裝了特定領域的邏輯和規則,使應用程式能夠在不依賴 UI 或控制器的情況下執行任務並做出決策。
模型概念:
-
模型不是類別或物件。它是由三個主要元素組成的層:
- 域物件:表示業務實體並包含特定於問題域的邏輯。
- 資料映射器:處理資料持久性以及與外部儲存的交互,例如資料庫。
- 服務:編排領域物件和資料映射器之間的交互,提供與業務交互的更高級別的介面
關注點分離:
- 模型層與UI層(視圖和控制器)分離.
- 與模型的通訊僅透過服務進行,確保明確的關注點分離並防止域邏輯洩漏到 UI 或控制器程式碼中。
- 這種分離促進了單一職責原則 (SRP)、靈活性和更容易的可測試性。
存取模型:
- 在視圖和控制器中,您可以使用以下框架透過依賴注入存取模型服務Symfony 的DI 容器或Auryn。
- 服務可以注入到建構函式中或透過工廠存取。
- 這種方法確保所有必要的服務可供這些元件使用。
修改模型狀態:
- 控制器負責處理使用者輸入並修改模型狀態。
- 它們呼叫服務方法,這些方法又與域物件和資料映射器互動以執行必要的邏輯運算。
資料持久化:
- 域物件代表業務實體,但不知道儲存。
- 資料映射器處理資料持久化和從外部儲存檢索。
- 這個分離允許業務邏輯保持獨立於特定的儲存技術
分離的好處:
- 透過為每一層分配明確的職責來強制SRP。
- 提高程式碼可讀性和透過隔離業務邏輯來實現可測試性。
- 提供靈活地修改業務邏輯或資料存儲,而不影響其他元件。
- 透過提供用於存取模型服務的一致介面來簡化外部 API 的開發。
其他註解:
- 資料庫表並不總是直接對應到域物件和資料映射器。
- 視圖不是模板,但處理表示邏輯和模板選擇。
- 應該有一個 1: 1 每個頁面或螢幕的視圖和控制器之間的關係。
以上是MVC 架構中的模型層該如何建構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!