안녕하세요 소스 분석하다 보니 이상한점이 있어서 질문하러 왔습니다 ^^;;
library 로드시 2번째 인자값 ( library 초기 선언 인자값 )에 대한 문제점입니다.
초기 코드이그나이터 2.2.0 + hmvc 5.4 버전으로 테스트용 라이브러리를 만들었습니다.
$this->load->library('TestLibrary', $params);
여기서 $params 타입은 String으로 파일경로를 전달하는 방식이였으나,
hmvc 5.4의 한계점이나 문제점이 발견되어 제거후 codeigniter 2.2.0 만 사용하는 방식으로 변경하였습니다.
훔 근대 여기서 String 으로 전달한 2번째 인자값이 null 처리가 되는 이상현상이 발생되어
system/core/Loader.php 를 확인 하였는데..
public function library($library = '', $params = NULL, $object_name = NULL) 메소드 내용중
if ( ! is_null($params) && ! is_array($params)) {
$params = NULL;
}
와 같이 배열이 아닌 인자값일때 null로 처리하게 변경되는 문제점이 발생되었습니다.
우선 해당 부분 주석처리 하여 정상처리가 되는걸 확인 하였으나,
기존 시스템 파일을 건든다는게 꺼림직해서 의도된 인자값인지 확인 하고 있으나,
도통 !is_array 가 들어간 이유에 대해서 모르겠더군요;;
메소드 설명에서도 mixed 타입으로 꼭 array로 정의되어있진 않은데..
@param mixed the optional parameters
흠.. 그래서 영문 메뉴얼 확인하니
In the library loading function you can dynamically pass data as an array via the second parameter and it will be passed to your class constructor:
가 눈에 띄네요.. 에궁;;
먼가 의도한거 같으면서 의도가 아닌듯 보이지만 -_-;;
해당 부분에 대해서 정확히 아시는분은 해당 부분에 대해서 궁금하고,
혹 라이브러리 제작방식이 생성자에 Array 타입에 인자값을 방식으로 해야한다면
한글 메뉴얼에 강조해서 추가해야 하지 않을까 싶습니다. ( 한참을 헤맷습니다 ㅠ.ㅠ )
흠.. 코드이그나이터가 익숙해지는 그날까지 -_-~~
config 와 호환되도록 하게 하기 위해서 인데요.
applicatioin/config 폴더에 라이브러리명과 같은 config 파일을 만들어주면 해당 파일에 명시된 배열 정보로 라이브러리를 초기화 합니다.