CI 묻고 답하기

제목 [초보]모델이나 라이브러리의 사용방법에 관하여
글쓴이 헛발이 작성시각 2011/11/21 12:42:49
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 17658   RSS
초보가 질문좀 드릴께요...
모델이나 라이브러리의 사용방법에 관하여 질문인데요..

Application하나만 갖고 작업을 하시는 분들도 계시겠찌만요...
모듈방식으로 작업하시는 분들도 계실걸로 생각하고 질문 올립니다.

예를 들어서요...

모듈에

./modules/oranges/controllers/oranges.php
이렇게 오렌지라는 콘트롤러가 하나 있습니다.
이 모듈에는 자기 모델도 갖고 있습니다.

./modules/oranges/models/oranges_m.php
이렇게 말이죠...

그리고 다른 모듈하나가 더 있습니다.
./modules/bananas/controllers/bananas.php
이렇게 말이죠.. 그리고 여기에서도 자기 모델을 갖고 있습니다.

./modules/bananas/models/bananas_m.php
이렇게 말이죠...



여기서 질문인데요...
바나나콘트롤러에서 오렌지 자료를 불러 오려고 합니다.
불러오는건 어려운일이 아니죠...

바나나콘트롤러에서 orange테이블을 읽어서 자료를 가져 오면 되니깐요..
혹은 바나나콘트롤러에서 오렌지 모델을 로드한다음에 오렌지 모델에서 불러오면 되니깐요..

근데 질문은 어떤게 더 나은건지 정의가 안 잡혀요...



1. 모듈과는 관계 없이 자기 모듈에서 필요한 테이블들을 불러 사용하는것이 좋은지..
2. 아니면 필요한 데이터가 있으면 해당 모듈에 모델을 로드해서 가져오는게 좋은지요..

왜 고민을 하고 있냐면요..

1번같은 경우에는 저렇게 해 버리면 오렌지 테이블을 읽어 사용하는 것이 이것저곳 모델에 생겨서
혹시 테이블 수정이 생기면 모델들을 다 찾아서 수정해줘야 한다는것이고...

2번같은 경우에는 필요한 모델을 로드해서 해당테이블을 한곳에서 관리 하게 되면 여러게의 테이블 자료가
필요하게 되면 많은 모델을 또는 라이브러리를 로드 해야 하기 때문에 불필요한 리소스를 많이 가져 오게 된다는것이거든요.

이것때문에 항상 고민 하고 있어서 다른분들께 고민을 털어 놓고 갑니다...
 다음글 submit.. (2)
 이전글 프로젝트 폴더 관리 어떻게 하시나요? (2)

댓글

변종원(웅파) / 2011/11/21 14:34:17 / 추천 0
빈도가 많다면 공용 라이브러리 또는 모델로 따로 빼서 사용하는 것이 좋을 것 같습니다.

초기 개발시 필요한 것을 공용으로 빼거나, 개발중간에 빈도수가 높은 것을 공용으로 빼거나(리팩토링이라고 하면 비슷할거 같네요) 합니다.

통상적으로 아이디 체크라던가 게시판은 많지만  뷰가 동일하다면 뷰에 관련된 모델도 공용으로 할 수 있겠죠.

정답은 없는 것 같고 상황에 따라 조금씩 다르게 적용이 됩니다.

(모델도 컨트롤러 하나에 꼭 하나가 아니라 빈도수에 따라 여러개로 나누는 것도 생각해볼만 합니다.
세분화된 컨트롤러 공용모델이 되겠죠.)
헛발이 / 2011/11/21 16:36:24 / 추천 0
감사합니다... 좀더 생각해 볼께요
한대승(불의회상) / 2011/11/21 21:28:56 / 추천 0
헛발이// 저는 2.번 테이블별로 모델을 생성하자는 주의 입니다.
단, join이 필요한 경우는 left를 기준으로 모델을 작성 하고 있습니다.


헛발이 / 2011/11/22 08:46:32 / 추천 0
답변 감사합니다...

그렇군요~ 저도 그렇게 하고는 있지만 간혹 이런 경우가 있어서요...
모든 곳에서 사용되지는 않치만 몇군대서 사용되는 테이블이라면
이걸 공통모델에 넣고 사용해야 할지 아니면 모듈속에 모델을 만들어 다른 모델에서
로드해서 사용해야 할지 ... 애매해서... 항상 고민 하고 있답니다..

ㅡ.ㅡ;;

한대승(불의회상) / 2011/11/22 09:28:28 / 추천 0
MVC의 장점을 살리려고 한다면 다른 모델을 로드하는게 맞다고 생각합니다.

리소스나 성능에 문제가 된다고 생각 한다면, 툴을 사용하여 리소스, 성능 부분을 측정하여 정확한 결론을 도출하는게 나을것 같습니다.