日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php model层怎么写逻辑,目前用php框架的话,大家会把逻辑写到model中吗?

發布時間:2023/12/3 php 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。