CI 묻고 답하기

제목 HMVC를 사용하는 이유 및 모듈화를 왜 하는가?
글쓴이 규지니 작성시각 2012/11/01 08:36:59
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 19495   RSS
안녕하세요. 포럼 여러분 ㅎ 열심히 코드이그니터로 삽질하는 중인데 요즘 들어서야 거의 올해 초에
객체지향개발에 참여해서 객체라는게 이런거구나 경험하는 중입니다.
하다보니까 궁금증이 생기는 부분이 있습니다.
모듈화를 하는 이유는 재사용이 가능하다고 알고 있는데 사실 완전히 재사용가능한 모듈을 만드는것은 시간이
필요한거 같습니다.

모듈로 된 부분이
board
sms
member
admin

이 있다면 이에 대한 사용자 페이지는 해당 모듈에는 관리기능과 사용자기능이 있을텐데
저는 사용자기능은 해당되는 컨트롤러로 관리자는 admin.php 로 지정했는데

board
- controller board.php admin.php

이런식으로 말이죠.

board.php 는 /board로 접근이 가능하지만
admin.php 는 admin 모듈에서 접근시 사용되는 함수를 전부 modules:run() 시켜야 하는 문제가 생겼습니다..;;
물론 router가 있으니 간단하게 해결가능한거같지만...
디렉토리 파일구조가 아직 개념이 잡히지 않습니다.

이것들이 가능해야 각 모듈별로 역할 분담이 될거같은데...


기본적인 게시물 뼈대만 가져옵니다.
board
this->view(board/list');

실질적인 상단 HEAD와 게시판 HEAD를 가져옵니다.
layout
view(_head);
view(_board_head);
modules::run(board/list);
view(_board_head);
view(_tail);

구상하고 있는게 이런식인데... ㅜㅜ 다른분들은 어떤식으로 하시는지요?

 다음글 폼에서 받은 변수 던져주기. (6)
 이전글 url $route 를 사용하려고하는데요 (5)

댓글

변종원(웅파) / 2012/11/01 11:10:20 / 추천 0
플러그인 구조를 가진 솔루션을 개발할 때라면 모를까 실무에서 완전한 모듈화가 필요할까 싶습니다.

구현하고 다듬는데 많은 시간이 소요될테구요. 에이전시에서 지속적으로 사용되는 자사 솔루션을 개발한다면
상관없지만 일반 웹사이트에서의 구현은...

저는 위젯(수정)과 매치박스(hmvc와 동일기능)를 가지고 레이아웃에 플러그인을 삽입하여 사이트를 만드는
솔루션을 만들었던 적이 있습니다. 

div로 사이트 구획을 나누고 각 div는 정해진 고유의 이름을 가지고 웹관리툴에서 해당 영역에 플러그인을
드래그앤드롭하여 연결. 각 플러그인들은 매치박스의 디렉토리에 장착되고 메인ci프로그램에서
매치박스의 플러그인들을 plugin:run(....) 형태로 삽입하여 구현했습니다.

웹메이커3라는 솔루션인데 아직 개인용은 무료배포할 겁니다. 소스 받아서 한번 보세요. 
몇몇 파일만 젠드로 암호화 되어 있고 나머지는 소스 보실 수 있습니다.
규지니 / 2012/11/01 11:37:44 / 추천 0
답변 감사합니다.
음 하시는 말씀이 맞습니다. 실제 실무에서는 시간관계상 비효율적이긴 한데...
말씀하신 지속적으로 사용되는 자사 솔루션 부분을 염두해둔 질문입니다~
특정 모듈을 만들어두고 추후 개발시에 같은 시간을 또 투자해서 만들기보다는 좀 더 단축시켜서
만들 수 있는 그런 모듈화가 필요할거 같아서요.
이건 제 개인적인 욕심이기도 하구요. 뭔가 꾸준히 열정을 쏟을만한 라이브러리를 만들기 위한..^^;
한대승(불의회상) / 2012/11/01 11:48:25 / 추천 0
규지니// 비슷한 고민을 좀 하고 있는데...
최근 번뜩하고 떠오르는 아이디어중 하나가 모듈별 공통 요소를 정리하고 용도에 맞게 CI컨트롤러 자체를 확장 하는겁니다.

어찌되었든 CI가 객체지향으로 설계 되었으니...


ㅎㅎㅎ 아직 정리가 안되서 고민만 하고 있는 중입니다. ^^



헛발이 / 2012/11/01 11:56:14 / 추천 0
저 같은 경우에도 처음에 웅파님 도움을 많이 받았는데요...
방법은 이렇게 있는거 같아요..

1. application만으로 홈페이지를 단독으로 만드는 방법

2. HMVC나 메치박스를 추가 하여 모듈화를 하여 만드는 방법
    (여기서의 모듈화란 하나의 사이트에서 여러가지 기능을 만들어 분리하여 관리하는 의미)

3. 위젯기능을 추가 하여 필요한 모듈을 만들어 기본 application이나 모듈에 끼어 넣는 기능
   (여기서의 모듈이란  콘트롤과 뷰만 있는 단순한 기능을 하는 의미)

4. 위젯과 hmvc(or메치박스)를 혼합하여 웅파님이 말씀하는 플러그인방식으로 만드는 방법


사실 자신만의 게시판을 만들어 어느 ci에서 만든 홈페이지에 철커덕 붙여서 아주 용이하게 사용하는
그런 자신만의 모듈을 만들기는 상당히 어렵다고 저는 생각해요...(고수가 아니여서  ㅋㅋ)

왜냐 하면 사실 게시판기능에는 아주 많은 기능을 포함하잖아요..
예를 들면 로그인과의 관계라던지...
아니면 파일 업로드의 관계라던지...
아니면 권한관계나 또는 레이아웃과의 관계..
또는 관리자 화면에서 게시판 추가 기능이라던지..등등


이런것들을 잘 설계해서 만들었다고 해도...
예를 들어 다른 사람이 만든 ci로된 사이트에 그냥 쌱 복사해서 바로 쓸수 없다는거죠...
왜냐 하면 내 게시판과 다른 사람이 만든 사이트의 구조가 똑같다는 보장이 없거든요..

그래서 범용으로 게시판을 만들기는 상당히 어렵다는게 저의 짧은 생각입니다..

그래도 예전과 같이 게시판 모듈이 있고 그 게시판모듈에 헤더와 푸터만 감싸 주고 사용할 수 있도록
만든 다면 가장 좋은 방법은 아마도 웅파님께서 말씀 하시는 플러구인 방식이 가장 용이하다고
판단이 됩니다..

저도 해본 경험이 있지만 그냥 hmvc로만 모듈을 만들어 다중게시판을 만드는건
나중에 URL문제나 레이아웃과의 문제에 직면하게 될거에요..

그래서 저도 결국은 플러구인 방식을 사용하게 되었는데요..
그 이유는 URL과 무관하게 자신이 만든 어느페이지에나 끼워 넣을 수 있거든요...

즉 임의의 view에 위젯처럼 위젯모듈을 물러내고 그 위젯은 hmvc와 연동되게 하는 방식이죠..
웅파님 말씀데로 웹메이커3라는걸 다운 받아서 소스를 한번 분석해 보세요~
헛발이 / 2012/11/01 12:03:31 / 추천 0
불의회상 >> 저도 요즘 그런 생각이 들어요..

제가 짜 놓은 코드들을 보면 단순히 객체지향적인 코드가 아닌
기존에 함수방식의 코드를 단순히 각기 구분된 폴더에 넣어 두고
단순히 그걸 찾아와서 기능을 수행한다는 생각이 들더라구요..

그러면 객체지향을 사용하면서 하나두 그에 해당하는 코드는 없다는거죠..

그래서 요즘은 어떻게 하면 객체지향적으로 코딩을 해서
보다 효율적으로 코딩 할 수 있을가 하는 생각이 저도 문득 들더라구요..
규지니 / 2012/11/02 09:00:43 / 추천 0
불의회상 >> 아무래도 그렇게 해야겠네요...^^;
헛발이 >> 네 안그래도 해외CMS 들 소스를 받아서 몇개는 살펴보고 분석해보고 있습니다..ㅜㅜ
웹메이커도 분석을 좀 해봐야겠네요.
지지고 / 2012/11/03 17:39:55 / 추천 0
규지니님 성과가 있다면 알려주세요~.

fuelcms 깔짝이다가 다시 ci로 돌아왔는데...

문서만 읽었을 때는 꽤 괜찮은 개념이 있었습니다...

view 에서 직접 간단한 컨트롤러를 바로 호출시켜서...

컨트롤러 전환없이 작업들을 처리하는 기능은 ... 이게 fuelcms 에서 기본적인 hmvc 를 변형시켜서 이해를 못했는데..

꼭 써보고 싶었거든요. ^^ 힘내세요!!