CodeIgniter 한국사용자포럼 BETA
빠르고, 유연한 PHP Framework!

CI 코드


codeigniter 에서 Library 폴더를 서브 폴더로 구성해서 사용하기      
서치 3 1,974 0 0 2010-05-27 01:29:36
2007년 개인 블로그에 작성한 글입니다.. 퍼갈시 출처 표기 바랍니다.
-------------------------
개인적으로 codeigniter 를 능숙하게 쓰는건 아니지만 조금 큰 규모의 사이트를 제작하다 보니 서브 폴더를 사용해야 했다. 나중에 알고본 사실이지만 다른 문제도 발생했었다^^;
그건 다시 적기로 하고 글을 이어나간다.

controller 에서 library 를 로드할때 다음과 같이 서브 폴더를 포함해 읽어들이도록 하면 에러가 발생한다.

$this->load->library ( 'member/libmember' );

때문에 좀 큰 규모의 설정을 바꿔줘야 한다.

codeigniter 가 설치된 디렉토리에서 다음과 같은 경로를 따라간다.

system/libraries

이 안에 들어가서 Loader.php 를 열고 679 번째 줄을 찾아 다음 내용을 삽입한다.


// Is the class in a sub-folder? If so, parse out the filename and path.
if (strpos($class, '/') === FALSE)
{
    $path2 = '';

}
else
{
    $x = explode('/', $class);

    $class = end($x);

    unset($x[count($x)-1]);

    $path2 = implode('/', $x).'/';

}


그 리고 나서 다음 내용을 아래와 같이 수정한다.

수정전 :

// Is this a class extension request?
if (file_exists(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT))
{
    if ( ! file_exists(BASEPATH.'libraries/'.ucfirst($class).EXT))
    {
        log_message('error', "Unable to load the requested class: ".$class);
        show_error("Unable to load the requested class: ".$class);
    }

    include(BASEPATH.'libraries/'.ucfirst($class).EXT);
    include(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT);

    return $this->_ci_init_class($class, config_item('subclass_prefix'), $params);
}


수 정후 :

// Is this a class extension request?
if (file_exists(APPPATH.'libraries/'.$path2.config_item('subclass_prefix').$class.EXT))
{
    if ( ! file_exists(BASEPATH.'libraries/'.$path2.ucfirst($class).EXT))
    {
        log_message('error', "Unable to load the requested class: ".$class);
        show_error("Unable to load the requested class: ".$class);
    }

    include(BASEPATH.'libraries/'.$path2.ucfirst($class).EXT);
    include(APPPATH.'libraries/'.$path2.config_item('subclass_prefix').$class.EXT);

    return $this->_ci_init_class($class, config_item('subclass_prefix'), $params);
}


그 리고 다음 줄을 찾아서 수정후로 바꿔준다.

수정전 :

$fp = $path.'libraries/'.$class.EXT;

수정후 :

$fp = $path.'libraries/'.$path2.$class.EXT;

이렇게 해주면 다음과 같이 가능하다.

libraries/member/libmember.php 파일이 있다면

라이브러리 로드시에 다음과 같이 사용해도 에러가 나지 않는다.

$this->load->library ( 'member/libmember' );

만약 위처럼 수정하지 않는다면 라이브러리는 서브폴더를 사용하지 못하게 된다.
  목록  

웅파 2010-05-27 09:25:54
  
자료감사합니다.

제가 1.6.3버전부터 사용을 했는데 이 부분은 코어에 적용이 되어 있었던 것 같네요. ^^
서치 2010-05-27 09:40:43
  
그렇군요.

제가 이 고민을 하던 시점이 2007년 그러니까.. 1.5.4 이하 버전까지라서.. 그 이후엔 CodeIgniter를 안 봤으니...

뒷북이군요 -.-;; 역시나
웅파 2010-05-27 10:20:12
  
이런 고민이 있었기에 현재와 같은 모습이 되었고 계속 발전이 되어 가는 거겠죠. ^^

오늘 올리신 다른 자료는 다른 분들께 도움이 많이 될 자료들입니다.

번호 제   목 글쓴이 날짜 조회 추천수
580 CodeIgniter SimpleXML library [0] 타로 2012-02-05 29 0
577 CI 와 Smarty 템플릿의 결합 [2] 불의회상 2012-01-26 156 0
573 Okada Design Blog 소개 [3] 타로 2012-01-12 272 0
568 woctopus 계정관리도구 [2] milosz 2012-01-09 211 0
566 업로드된 이미지 정사각형으로 썸네일 만드는 함수 [3] 불의회상 2012-01-06 221 0
554 코드 이그나이터를 접하고 처음으로 만들어본 객체 입.. [6] 내일은 2011-11-11 1246 0
528 모델코드 생성기 [25] 불의회상 2011-10-13 1144 1
525 ci memo + tank_auth [2] milosz 2011-10-04 943 0
512 포럼소스를 2.0.1 버전에 맞게 수정하였습니다. [2] 탱크 2011-04-02 3546 2
509 CI 메뉴얼 CHM 버전(영문 2.0) [1] 브라이언 2011-03-30 1242 0
508 CI 메뉴얼 CHM 버전 [0] 브라이언 2011-03-30 1382 0
494 ci memo [8] pam 2011-02-20 1971 1
489 CI 압축 프로그램 [2] 준이 2010-12-27 1637 0
482 듬직이님의 헬퍼 ip 부분 추가. [0] 나이유미 2010-11-22 1998 0
475 SELECT() 사용 시 문제점 [2] 마냐 2010-09-16 2742 0
473 CI의 사용자 인증 소스파일 [2] corean 2010-09-12 3142 0
471 CI 1.7.2 한글 언어팩 1.1 [1] cleansugar 2010-08-26 2221 0
470 Upload 라이브러리 수정본 [0] sisco 2010-07-28 2398 0
464 iScaffold [4] 준이 2010-07-26 1981 0
458 이미지 등분하기_helper [0] 마냐 2010-06-18 2226 0