菜鳥工程師紀錄工作所學-EP2.Laravel 進階 MVC 架構設計

Andy Wei
Dec 24, 2021

--

架設網站沒有一定要使用後端框架,但使用框架在開發上以及管理專案上一定會方便、容易很多,而近幾年的後端框架又以 MVC 架構最為常見,但初學者如我,總是覺得程式就是要乖乖填入 MVC 架構內,如果專案很大時則會導致 Controller 和 Model 非常肥大。在進入職場後,才知道原來還有進階的 MVC 架構,讓我們可以更容易地維護專案。

此進階架構就是把 MVC 拆分出更多的目錄,每個目錄都有其專屬的功能,這樣就不會所有程式都往 MVC 塞,導致程式與功能太過集中,而違反單一職責原則,以下就來介紹新的目錄其負責的功能吧!

  1. Entity:Entity 是用來處理 Eloquent Model 的相關設定,例如連接的資料表、主鍵和白名單等等,除了設定外,Entity 當中不會有任何的邏輯或資料撈取的行為
  2. Repository:Repository 是用來處理資料表相關的邏輯,像是 create、update 等等,Repository 中不會有商業邏輯,此外,專案若有遇到需要處理相同資料表時,就可以重複的使用 Repository,而不會導致專案到處都出現相同的資料表處理邏輯
  3. Service:Service 是用來處理資料的商業邏輯,一個服務通常是由各個小功能所組成,而當商業邏輯從 Controller 搬移到 Service 後,就會發現Controller 變得更簡潔易懂,而且不再因專案變大而變大
  4. Presenter:Presenter 會使用 inject 的方式注入到 blade 檔案,Presenter主要是在做資料顯示邏輯,讓 view 可以只在意畫面顯示的問題,並且也讓 view 的程式不那麼複雜

以上就是進入職場後學習到的進階 MVC 架構,這種架構會將功能切得更細,不會再是所有 code 都往 MVC 塞,因此更好維護與擴充,分享給大家。

--

--