在看TP的時候,看到這樣一段描述:
資料層:Model/UserModel 用於定義資料相關的自動驗證和自動完成和資料存取介面
邏輯層:Logic/UserLogic 用於定義使用者相關的商務邏輯
服務層:Service/UserService 用於定義使用者相關的服務介面等
這些層有什麼區別,是麼時候能用到,互相之間是相關聯的還是獨立的
回複內容:
在看TP的時候,看到這樣一段描述:
資料層:Model/UserModel 用於定義資料相關的自動驗證和自動完成和資料存取介面
邏輯層:Logic/UserLogic 用於定義使用者相關的商務邏輯
服務層:Service/UserService 用於定義使用者相關的服務介面等
這些層有什麼區別,是麼時候能用到,互相之間是相關聯的還是獨立的
直接貼我在SF第一個回答吧。 總結一句,就呢麼回事兒~ 不要讓這些亂七八糟的東西擾亂了視線。
------------ 原答案:
最近在做的東西用的剛好就是ThinkPHP 3.2.x 版本;至於symfony除了用到一些庫之外 並不是很熟悉,所以就不獻醜了。
按我的理解,TP中的Service可以理解為API, 並不是像LZ理解的C和M的中介層,M層是用到和資料庫互動的;而Service中,則不限定於此,作用是為控制器或其他東西提供正常化的「服務」介面供使用(Service)。
舉個例子,「User」「Department」兩個Model,分別對應其對資料表的CURD操作。 「UserService」提供 「authroize」、「get_department」、「is_authenticated」等「服務介面」。 無非是把原先全部讓Model做的事兒更加細緻的分離出來,包括TP中的Logic也是一樣,雖然現在沒有怎麼用到。
---------- 補幾句:
Model 就是和資料庫打交道的,CURD,更好的來說是僅read,通常來說要繼承ViewModel。
Service 和 Logic 就是封裝服務介面和商務邏輯的。 通常來說繼承Model或者RelationModel 或者AdvModel, 或者啥也不繼承,就是提供介面
eg:
namespace Analytics\Service;class AnalyticsService { public function get_date_range_by_input() {}}
舉個栗子:
老闆讓產品經理開發一個圖書館管理系統,產品經理找各個程式員完成,每個程式員做不同的模組。
老闆就是表現層,
產品經理就是服務層,
程式員就是邏輯層。
他們之間是有協議(勞工合約)互相串連的。
但是各自獨立存在。