2020-11-09|閱讀時間 ‧ 約 3 分鐘

Laravel 加入 Repository 與 Service

Laravel本身是MVC架構的Framework,但隨著專案越來越龐大,若不把系統架構分工再切細一點,可能會導致日後維護的困難。
例如可能會很常發生controller要與model溝通拿資料,又要處理商業邏輯,就會導致controller越來越肥,因此本文要介紹的是如何加入Repository與Service這兩個概念。
簡單來說,我們可以把角色分工如下:
  • Repository 與Model溝通取資料
  • Service 處理商業邏輯
  • Controller 接收request、檢查params與http response等等。
  • Model table relation相關
也就是說,當一個request進來之後,由Controller為進入點,把request參數往下帶給Service來處理商業邏輯,接著在Service內呼叫Repository,由Repository操作model object來取資料。
程式碼如下:
其中app\Repositories跟app\Services都是自己建的folder,Laravel本身並不會提供這兩個folder。
測試article api:
結論: 實務上建議看專案大小跟需求來決定是不是要切這麼細,並沒有強制規定架構一定要怎樣才叫好,這種東西其實很看個人,每個工程師設計出來的架構可能都不太一樣,但目標應該都是一樣的,為了提高可維護性。
Note: 本篇source code是基於這篇: Laravel Restful API with JWT Authentication的project繼續往下改。(Laravel Framework version: 8.13.0)
分享至
成為作者繼續創作的動力吧!
小弟是一位軟體工程師,樂於幫助他人,撰寫技術文章除了幫助自己複習以外,也希望可以幫助到他人,若文章內容有誤,還請大大不吝給予指教!
© 2024 vocus All rights reserved.