그건 다시 적기로 하고 글을 이어나간다.
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' );
만약 위처럼 수정하지 않는다면 라이브러리는 서브폴더를 사용하지 못하게 된다.
댓글 없음:
댓글 쓰기