CI 묻고 답하기

제목 CI에서 Library class 상속에 관한 질문입니다.
글쓴이 SADBLUE 작성시각 2009/09/04 10:30:45
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 27583   RSS
현재 CI를 이용해서 개발을 어느정도 완료 하고 사용중에 있습니다.
그런데 사용하다 좀 불편한점들이.

1. 개인적으로 만든 Class A를 만들고 이것을 상속받아서 AA, AA를 상속받아 AAA를 만들고
   AAA를 load해서 사용하고자 하는 경우에 AA에서는 A를  AAA에서는 AA를 include 해줘야만 하는데
  그냥 AAA만 로드를 하는 경우에는 AA와 A가 정의 되지 않은 클래스 라고 에러가 납니다.
  현재 require_once를 이용해 쓰고는 있는데. 비주얼스튜디오에서 include경로 지정 하듯이
  미리 정해 놓는 방법이 없는지 궁금합니다.
  인터페이스를 정의 해서 만들고 싶어도 너무 불편하다는 생각이라서요.

2. Controller를 상속받은 MY_Controller를 만듭니다.
   그리고 다시 MY_Controller를 상속받아 만들고 싶습니다. 이럴 경우에 CI포럼에서는
   그냥 MY_Controller 소스에 다 포함해서 상속을 받으면 사용은 가능하다 라는 글이 있고...
   이미 그렇게 사용중이었습니다.~_~;
   이렇게 되는 이유는 기본적인 사이트의(ASP성격의 사이트라 보시면 됩니다.) 기본 Data를 불러 오는 기능이 들어가고
   Ajax에 사용되는 컨트롤과 Display하는 컨트롤로 나누고 싶어서 입니다.
  이렇게 CI에서 제공되는 클래스들은 여러 단계로의 상속을 이렇게 밖에 쓸 수 없는 것인지요.

답변 부탁드립니다.~_~;;

 다음글 [기초]scaffolding에 대한 질문 (5)
 이전글 SQL문장이 보여요~ (3)

댓글

emc / 2009/09/04 10:55:18 / 추천 0
1. 클래스 인스턴스 생성은 물론 하셨겠지요?
 생성자에 부모클래스를 생성.
  부모클래스명::부모클래스명();

SADBLUE / 2009/09/04 11:02:02 / 추천 0
음.; 질문을 해 놓고 보니 두 질문의 요점은 모두 비주얼 스튜디오처럼 include path를 지정해놓고 그 디렉토리에 있는 php소스들을 include 라던가 require하지 않고 사용할 수 있는 방법이 되겠네요.

위에서 설명한 A, AA, AAA라는 클래스가 모두 별개의 파일로 존재 하게 됩니다.
그럴경우에 AA라는 클래스에서 A라는 클래스를 상속받으려면 include 라던가 require를 해줘야 합니다.
안그러면 undefined error가 나지요.

emc님 고맙습니다.
케이든 / 2009/09/04 14:08:21 / 추천 0
말씀하신거처럼 보통 한 파일안에 다 너놓거나

따로 파일을 만들어 부모클래스를 include 해놓고 쓰죠

__autoload() 로 하면 되는데 CI서 쓰려면 가공좀 해야할거같네요
SADBLUE / 2009/09/04 14:55:54 / 추천 0
그렇군요..
그런 방법 밖엔 없는거였군요.;
고맙습니다 케이든님.