ThinkPHP 資料層的疑惑

來源:互聯網
上載者:User
在看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() {}}

舉個栗子:
老闆讓產品經理開發一個圖書館管理系統,產品經理找各個程式員完成,每個程式員做不同的模組。
老闆就是表現層,
產品經理就是服務層,
程式員就是邏輯層。
他們之間是有協議(勞工合約)互相串連的。
但是各自獨立存在。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.