제목 | 컨트롤러에서 컨트롤러 부르기 | ||
---|---|---|---|
글쓴이 | 한대승(불의회상) | 작성시각 | 2012/11/29 09:52:32 |
|
|||
포럼에 자주 올라오는 질문중에 "CI에서는 모델이나 뷰처럼 컨트롤러를 땡겨 올 수 없나요?" 라는 질문이 있습니다. 그 때마다 "안됩니다." "왜 그렇게 하려고 하시나요?" "컨트롤러는 URL로만 접근이 가능 합니다." 라는 답변으로 마무리 짓곤 했었죠. 어제 웅파님 문상 간 자리에서 밥 한 술하고 술 한 잔하고 할 얘기가 없는 상황에서 CI를 처음 접하고 허둥대던 이야기를 하던 중 불쑥 그 이야기가 튀어 나왔습니다. 그런데 질문이 약간 달랐어요. "왜 CI는 컨트롤러를 확장 할 수가 없는거지?" 어제 저녁엔 술도 들어간 상황이라 "그래서 CI하던 사람들이 kohana 나 yii 같은 프레임워크로 옮기는거야" 라는 답변으로 마무리 했는데 잠자리에 누워서도 그 질문이 계속 메아리 치는 겁니다. PHP 5.3에서는 Jquery 처럼 익명 함수도 지원해 주고 namespace도 지원해 주고 5.4, 6.0 의 기능들을 살펴보면 OOP 지원이 java 뺨치는데... 라는 동기가 있었습니다. 썰이 길었네요. -------------- 위 질문들을 다시 해석해 보면 "CI는 OOP 프레임워크 인데 왜 상속과 확장이 안되는거지?" 라는 질문으로 바뀝니다. 안되는게 어딨어! PHP도 이제 훌륭한 OOP 언어 인데... 아래 코드를 작성해서 집어 넣으시고 컨트롤러를 호출해 보세요. controllers/test.php <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); require_once APPPATH . 'controllers/welcome.php'; class Test extends Welcome {}test 컨트롤러는 welcome 컨트롤러를 상속 받았습니다. http://mysite.com/test 하시면 확인 하실 수 있을거에요. ㅎㅎㅎㅎㅎ 해놓고 보니 정말 간단한 거였네요. 고정관념 참 무섭죠.. 당연한 소리지만 CI모델도 같은 방법으로 상속과 확장이 가능 합니다. 즐거운 코딩 되세요~~ ^^ |
|||
다음글 | 특정 컨트롤러에서 php session 사용하기 (2) | ||
이전글 | 게시판 등 검색시. (2) | ||
헛발이2
/
2012/11/29 10:24:41 /
추천
0
|
milosz
/
2012/11/29 10:38:26 /
추천
0
저도 의아한 부분이었고 오래 생각해봤던 부분인데요.
코드이그나이터에서의 MVC는 순수 객체지향 구현에 방점을 두기보다 비지니스 로직의 구현에 더 중점을 두는 것 같습니다. 만약 상속을 통해 동일한 기능을 구현해야 한다면 해당 부분은 컨트롤러로 보기보다는 라이브러리로 구현해두고 각 컨트롤러에서 로드해 사용하는 식으로 말이죠.
그냥 제 생각입니다. 주절주절 ㅎ |
라마야나
/
2013/11/08 12:23:09 /
추천
0
내용이 제목가 상이해서 순간 ;
제목만으로 보자면 milosz 님의 말씀 처럼 라이브러리로 구현을 해야 할 것 같고. 내용으로 보자면 당연시 상속해서 사용하는 건 가능 하죠 OOP인데. ^^. |
푸하라
/
2014/01/08 11:53:35 /
추천
0
음 시간이 한참 지난 내용같은데.....
상속이라는 방법을 이용한 컨트롤러 끌어오기를 하신 내용으로 작업을 하셨네요... 저도 오늘 처음 으로 찾다가 발견하여서 이걸 읽었는데.... 상속해서 하는방법은 oop해보신 분들이라면 당연 먼저 생각하셨을 것 같고 그런 문제가 아니라 다른 접근이 필요하여 다른 컨트롤러의 기능을 사용 하고 싶어 하는것 아닐까 합니다. 예로 들자면 로그인 해야만 글을 읽을 수 있도록 개발 한다면 ... 라이브러리 개발 하고 뷰까지 개발을 완료했는데... 굳이 로그인을 해야 하는 뷰가 필요하다면 redirect를 이용한 사이트 이동보다는 컨트롤 내부에서 자동으로 다른 컨트롤러를 로딩하여 불러 오고 싶을 수 있을것 같습니다. 이럴때 굳이 리다이렉트를 쓰느냐 아니면 컨트롤러를 불러와서 그냥 그페이지에서 출력하느냐? 정도의 차이 일꺼 같습니다. 마냥 상속으로 해결 할 수있는 문제는 아닌듯 하네요..... |
한대승(불의회상)
/
2014/01/08 12:18:32 /
추천
0
푸하라// 그렇군요. 컨트롤러의 최종 결과물을 원할수도 있겠네요. 모듈처럼 말이죠.
|
저도 한번 해 봐야 겠네요 ...