Laravel : MVC아키텍쳐에 대해
Laravel : 라라벨의 MVC 아키텍쳐
라라벨의 기본 아키텍쳐는 MVC이다.
Controller : 사용자로부터의 요청을 받아 , View와 Model을 연결
Model : 데이터 처리- 실제로는 Eloquent 에서 담당한다.
View : 화면처리
우리가 알고 있는 MVC 는 범용적인 경우에 적용하는것이고, 라라빌에서의 MVC 는 조금 다르다.
특히 비지니스 로직을 담당하는 Model 을 artisan 으로 생성해 보면 데이터베이스에서 데이터를 꺼내거나 처리하는 Eloquent 가 use 에 추가된다.
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
app/Http 폴더는 라라벨 프레임워크를 이용하는 것을 전제로 작업을 View , Controller 이나 Middleware 를 만들때 주로 사용된다.
Model 은 직접적으로 View와 연결하지 않고 Controller에서 참조한다.
이렇게 되면 Controller가 요청받은 리퀘스트처리, View의 처리와 Model 에서 전달받은 데이터를 가지고 비지니스 로직까지 품어야 되는데 Controller 가 비대해지는 경향이 있다.
규모가 작은 홈페이라면 라라벨의 기본 구조만으로도 충분하지만, 좀 규모가 있는 개발이라면 기능에 따라 모듈 또는 디렉토리 별로 관리하는것이 좋다.
문제는 서비스가 늘어날수록 View나 Controller가 늘어나는것은 어쩔수없다.
해결 방법은 여러가지가 있겠지만
기능(feature)별로 폴더를 만들어서 그 안에 Domain layer, Data layer 그리고 Presenter까지 세트로 묶는 방식이 기능확장 또는 추가/삭제 시에 좋을거라 생각한다.
즉,
app폴더와 같은 레벨의 폴더인 package 등과 같은 상위 폴더를 만들고 하위로 아래와 구조로 만든다.
Features
|-StoreDetail
|-Domains
|-Models
|-resources
|-Presenters
|-StoreList
|-Domains
|-Models
|-resources
|-Presenters
Infrastructures
|-Databases
|-Apis
|-FileSystems
|-Messages
|-Logs
Shared 를 만들어
|-Utils
|-Constants
|-Settings
파일과 폴더가 많아 지지만 이렇게 함으로서 각 기능별로 추가/수정/삭제가 용이하고 Presenter를 통해 Controller 가 데이터를 삽입/취득 하게하여 controller의 부담을 경감시킬 수있다.
0 comments:
댓글 쓰기