CI 묻고 답하기

제목 컴포넌트 작성 질문.
글쓴이 Nyquist 작성시각 2013/05/29 17:55:21
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 13107   RSS
안녕하세요 CI로 프로젝트를 1년정도 진행한 개발자입니다.

그간 CI를 사용하면서 의문이 생겨서 고수분들 께서는 어떤 생각을 갖고 계신가 궁금합니다.

CI에는 CI_ 시리즈를 상속받는 MVC 모델을 제공합니다. MVC 아키텍처를 적용함으로써 뷰와 모델이 분리가 되었지만
제가 필요로 하는 부분은 view나 controller, model 어느쪽에도 의존하지 않고 순수 로직으로 이루어진 컴포넌트가 필요합니다.
CI에서는 공통 함수나 클래스를 따로 정의할 수 있는 helper와 library를 제공하지만 저는 이러한 것들은 프로젝트에 독립성을 갖고 있어야 된다고 판단되기 때문에 어떤 프로젝트에서나 사용하는 글로벌한 기능들만 정의합니다. 하지만 프로젝트 내부에서만 쓰이는 기능으로, 여러 컨트롤러 혹은 여러 컴포넌트들이 참조해야하는 기능들을 라이브러리로 정의해 놓기에는 라이브러리의 원래 개념과 멀어지는 것같습니다.

 물론 CI의 코어를 커스터마이징해서 $this->load->service방식으로 스프링의 서비스 레이어 같이 비지니스 로직을 위한 레이어를 만들수도 있겠지만 이렇게 까지 아키텍쳐를 변경하는 커스터마이징을 할 바엔 차라리 스프링을 쓰겠다라는게 제 생각입니다. 또한 폴더를 따로 작성하여 쌩 php class를 include 하는 방식은 그냥 쌩 php와 별다를게 없는 것 같습니다.

 제가 이런 생각을 갖게 된 이유는 절차지향적 코드를 CI_Controller를 상속받은 컨트롤러와 CI_Model을 상속받는 모델에 찢어 넣었을 뿐인 코드를 너무나 많이 봐왔기 때문입니다. 객체와 객체간 메세지를 주고 받는 형식이 아닌 V - C - M - C  - V 의 물리적인 공간만 다를 뿐인 절차지향적 코딩을 CI가 권장하는 것인지? 아니면 제가 작성하고 본 것들이 형편없을 뿐이었는지가 궁금합니다.

 결론은 CI를 쓰는 개발자 입장에서 어떻게 객체지향설계를 해야하며, pojo 스타일의 컴포넌트 혹은 클래스는 어떻게 작성,관리가 되는가 입니다. 이에 대해 CI 고수 개발자 분들의 의견을 듣고싶습니다.



 다음글 자바스크립트 두번호출이 됩니다. (7)
 이전글 view에서 controller 함수를 호출할수 있나요... (1)

댓글

한대승(불의회상) / 2013/05/29 18:09:19 / 추천 0
느슨한(?) 프레임워크가 CI의 장점이자 가장 큰 단점이 되죠.

독립적인 컴포넌트 개발 하시려면 마이크로스택 프레임워크를 사용하세요.

slim 같은...
변종원(웅파) / 2013/05/29 18:19:44 / 추천 0
만들어 쓰셔야 할 것 같네요.

php가 완벽하게 객체지향을 지원하지 않던 php4 시절에 개념을 따서 편리하게 개발하기 위해
개발된 프레임워크입니다.(뭐 지금도 완벽하게 지원하는 것은 아닙니다)

ci는 느슨해도 너~~~무 느슨합니다. 잘 모르고 사용하면 독이고 잘 사용하면 개발자가 정말 편리한..

느슨한게 싫으면 다른거 쓰셔야죠. ^^



Nyquist / 2013/05/29 18:24:14 / 추천 0
한대승,변종원 / 답변 감사합니다 ^^