CI 묻고 답하기

제목 베이스 클래스를 만들고 그것의 확장클래스를 만들려고하는데..
글쓴이 데브 작성시각 2012/02/09 18:07:05
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 20657   RSS
application/libraries/ 아래에 A라는 클래스를 만들고

A.php
class A{
  public function test(){ return "A"; }
}


B.php
class B extends A{
  public function test(){ return "B"; }
}

B라는 클래스는 A클래스의 확장클래스로 만들었는데

테스트해보니 A클래스의 test메써드는 잘나오는데 B클래스는 A클래스를 찾을수없다고 에러가나오네요..

확장클래스 사용 불가능한건가요??
 다음글 [초보] form_validation 질문요 (2)
 이전글 $this->email->send()를 비동... (5)

댓글

변종원(웅파) / 2012/02/09 18:15:18 / 추천 0
 ci에서 library는 그렇게 사용하실 수 없습니다.
데브 / 2012/02/09 18:17:27 / 추천 0
웁스... 그럼 사용자가 만든 클래스를 확장클래스로 재가공 할수있는방법은 없는건가요??
SEB / 2012/02/09 23:03:02 / 추천 0
라이브러리 로드 메서드 말고 그냥 include A.php 하시고 b를 콜하면 되지 않을까요?
한대승(불의회상) / 2012/02/10 08:16:13 / 추천 0
데브// SEB님이 지적 하신것 처럼

b.php 에 

include_once('a.php');

class B extends A{
  public function test(){ return "B"; }
}


라고 하시면 될거 같은데요.
데브 / 2012/02/10 09:08:05 / 추천 0
오오! 감사합니다~~

왜 이생각을 못했지..ㅋ;
리버 / 2012/02/11 14:07:50 / 추천 0
제가 CodeIgniter 2.1.0 버전으로 테스트를 했는데 include_once  안해도  B 클래스에서  오류가 안나던데요.  
<?php

class ExtendsTest extends CI_Controller {
 
 public function index() {
  $this->load->library('a');
  $this->load->library('b');
 
  echo $this->a->test();
  echo $this->b->test();
 }
}

 

변종원(웅파) / 2012/02/11 20:30:01 / 추천 0
리버/ 질문한 상황과 다릅니다.

질문은 a클래스를 b클래스에서 확장하여 선언을 하고 사용하는 것을 의미합니다.

리버님이 사용하신 구문은 각자 다른 클래스를 선언하여 사용하는 경우입니다. (정상적인 경우)
리버 / 2012/02/12 13:46:06 / 추천 0
제가 잘못 생가했습니다.  B 클래스에서 A 클래스를 찾지 못하겠다고 나오네요. 다음을 참고해서 해결가능할 것도 같은데요. __autoload 이횽해서.

philsturgeon.co.uk/blog/2010/02/CodeIgniter-base-Classes-Keeping-it-DRY