php model层怎么写逻辑,目前用php框架的话,大家会把逻辑写到model中吗?
目前用php框架的話,大家會把邏輯寫到model中嗎?
還是model只做數據的添加刪除 修改操作?
如果說是簡單 mvc框架 你們把邏輯寫在哪里?controller?
還是說自己弄了個邏輯層?
回復內容:
目前用php框架的話,大家會把邏輯寫到model中嗎?
還是model只做數據的添加刪除 修改操作?
如果說是簡單 mvc框架 你們把邏輯寫在哪里?controller?
還是說自己弄了個邏輯層?
我支持把業務邏輯封裝到Model里,Controller(或稱Action)里最好只進行數據轉換、整理,確保在Model里盡量不要直接訪問GET、POST、SESSION里的數據,一切需要的數據通過方法參數或實例化時傳入Model,這樣的話代碼干凈、方便測試,且在你需要編寫服務器端的批量維護程序時,仍然可以調用Model來完成業務數據的獲取和寫入。
同時也贊同 @Airy 的做法。
我一般這么處理的:跟視圖相關的邏輯寫到 Controller,比如根據登錄狀態展示不同的頁面.跟數據相關的邏輯寫到 Model .
我目前是:
Model: 業務邏輯
Contrller: 界面邏輯+基本數據驗證
但是發現業務邏輯寫到Model里,造成Model非常臃腫, 而且與多種基礎設施,第三方Api等等耦合,維護十分不便。
打算重構并獨立出一層業務層,放置Model與Model、Model與其他組件的交互邏輯、以及異常處理等。讓Model只負責數據驗證和CRUD。
我是中間增加一個業務層,控制器只做輸入輸出,不做業務邏輯,把業務邏輯放在業務層處理,提高代碼公用性,model與表一一對應,只做單表查詢或者關聯查詢
這個涉及到面向對象設計的一個問題。Robert·C·Martin在面向對象設計的原則里面提出SOLID原則,具體內容可以參考維基百科的這個鏈接SOLID面向對象設計
那么,控制器的作用在于對視圖和業務模塊進行調度,所以根據單一功能原則,控制器不應該包含業務邏輯的處理功能,也就是說業務邏輯不應該放在控制器部分進行處理。
那業務邏輯是不是應該放在Model部分進行處理呢?我們在觀察Model的這個概念的時候,會發現,這個概念是比較含糊的。因為業務邏輯的處理起碼分為兩個部分,第一個部分,數據存取;第二個部分,邏輯操作。根據我的理解,我個人認為,Model層的工作在于業務邏輯的實現,而不應該進行數據存取。
我們反過來想這個問題,如果把業務邏輯和數據存取耦合在一個類里面,會存在什么問題?那么,一個顯而易見的問題就是,當我們的數據源在未來架構中發生變化和調整的時候,我們就必須修改Model類以適應這種變化,而這應該是違反開閉原則的,也違反單一功能原則。因此,合理的做法應該是,將數據存取單獨的封裝成另外一個類。
我們進行程序設計的時候,除了考慮基本的功能實現以外,還必須考慮代碼的可維護性,程序的可擴展性這些問題,因此程序要做到“高內聚,低耦合”,理想的情況是,當需求和架構發生變化的時候,我們不應該修改既定代碼,而增加新代碼來反應系統面臨的變化;不同模塊之間,依靠接口編程進行互相調用,而封閉模塊的內部實現。
因此,一般而言,控制器只單獨處理視圖和Model的調用,依靠接口進行數據傳遞工作,視圖和Model的內部實現對于控制器應該是封閉的。在MVC的設計原則中,有一條獲得比較多認可的原則就是Thin Controller Fat Model。在實踐中,一些業務邏輯的處理結果可能通過常駐進程和定時任務進行處理,而控制器只需要跟靜態緩存進行溝通,即可快速的做出響應。因此,業務邏輯處理是一個單獨的系統。
當然,系統分層和解耦,會額外帶來對象管理和設計上的復雜度和負擔。MVC模式并不是適合一切情況的最佳模式,對于中小型系統,業務邏輯不復雜的情況下,其實使用Model1方式進行系統設計,即一個前端展示系統和一個后端數據操作系統即可。而對于需要長期可動態維護、進行服務擴展、靈活配置系統的軟硬件資源的系統,則需要進行充分的封裝解耦以隔離問題。
我這邊基本和之前幾位說的一致,唯一不同可能是:model層只寫針對一張數據表的邏輯代碼,而設計到多個表的復雜業務邏輯會寫在額外的業務層。
我們的新員工,通常會將邏輯寫在 Controller 中,Model基本沒有任何內容。
所以,入職說明規定:將業務邏輯寫在Model中的
因為:放在 Controller 中,會重復對某些業務邏輯編碼。
比如:病人換床會出現在:新入院、老人換床、出院 多個 Controller 中,但是代碼只應該寫在 病人或者床這個Model中。
引用文字
涉及到多個表的復雜業務邏輯會寫在額外的業務層。
這個我還是認為要寫在Model中,因為涉及多個Model,所以只能選擇某個合適的model寫入代碼,其他model調用。
不知道是不是有更好的設計方案。
相關標簽:php
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!
總結
以上是生活随笔為你收集整理的php model层怎么写逻辑,目前用php框架的话,大家会把逻辑写到model中吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows电脑如何设置定时关机电脑如
- 下一篇: 动物园宣传标语文案30句