CI 묻고 답하기

제목 mvc의 원론적인 궁금증이 있습니다.
카테고리 CI 2, 3
글쓴이 그동안 작성시각 2018/09/06 13:45:38
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 13118   RSS

목록에 data를 뿌리는데,  10일전 data,  20일전 data, 30일전 data 이렇게 구분되어 뿌린다고 가정했을때.

목록에 뿌릴 data를 어디서 가공하는게 가장 좋을까요?

 

1번 : 모델에서 쿼리를 각각 만들어 넘긴다.

2번 : 컨트롤러에서 data를 분기해서 뷰로 넘긴다.

3번 : 뷰에서 if문으로 나눠 뿌린다.

 

 

 다음글 프로시저를 생성하는 함수가 있나요? (1)
 이전글 ciboard 처음 접하는 사람입니다 ㅜㅜ 도와주세요 (3)

댓글

kaido / 2018/09/06 13:49:15 / 추천 1

원론적으로는 컨트롤러에서 전부 계산 합니다

모델의 궁극적인 형태는 그대로 빼서 다른데다 넣어도 그대로 사용 가능 해야 할 정도로 로직이 적게 들어가야 합니다

[다른 의미로는 재사용율이 매우 높아야 합니다]

 

뷰는 더 근본적으로 계산없이 출력만 한다는 느낌으로 해야 합니다.

 

요약하면 10일전 데이터 20일전 데이터 30일전 데이터를 컨트롤러에서 각각 분류해서 한번에 뷰에 넘겨주어야 합니다.

 

다만 어디서 뭘 할지는 개발자의 재량입니다

계산만 따로 헬퍼로 만드는 분도 있습니다

이건 정답이 없으니 계속 고민해 보셔야 합니다 홧팅~

변종원(웅파) / 2018/09/06 14:06:25 / 추천 0

패턴대로라면 모델함수(10), 모델함수(20), 모델함수(30) 을 호출해서 뷰에 넘겨줘야 하는게 맞겠죠.

동일쿼리 3번 날리는게 싫으면 모델함수(30) 하고 컨트롤러에서 재계산하고 뷰로 전달. 

뷰에는 단순하게 foreach로 출력하는 부분만 담당합니다. (자바스크립트로 한다면 php 구문은 아예 없을 수도...) ^^

박쥐 / 2018/09/06 20:30:38 / 추천 0

제 경우는

Model 에서는 비즈니스 로직을 제외하고 순수하게 데이터를 CRUD 하는 등 기본적인 처리 등을 구현하고

Service 라는 레이어를 별도로 만들어 Service에서만 Model 을 주입받아서 비즈니스 로직을 처리 합니다.

Controller 에서는 Service 를 불러와서 비즈니스 로직에 맞게 처리 합니다.

물론 Controller 에서 비즈니스 로직을 처리해도 되지만 이 경우 중복 코드를 어떻게 해결할지 곤란한 상황이 생깁니다.

Java의 Spring 프레임워크를 한번 공부해보세요. 디자인 패턴에 대해서 더 잘 알게되어 PHP하는데 많은 도움이 됩니다.

 

D-Days / 2018/09/11 15:08:19 / 추천 0

정답이 없는 문제 인듯 합니다.

A도 B도 C도 다 가능하지만, 기본적인 철학에서 A에서 정의 하는것이 좋다라고 한다면

그 철학을 따르는 것이 좋지 않을까요.?

그래야 남이 봤을때 아 이건 A를 살펴보고 수정하면 되겠다 라고 직관적으로 판단이 가능해 지니까요.

 

자신만의 코드라면 어디에 넣은들 무슨 상관이 있겠습니까.. ^^