CI 묻고 답하기

제목 ci 모델 로드 관련
카테고리 CI 2, 3
글쓴이 Nyquist 작성시각 2016/10/12 14:59:10
댓글 : 5 추천 : 0 스크랩 : 1 조회수 : 17203   RSS

모델이나 라이브러리를 한번 로드하게되면

같은 트랜잭션 내에서 다시 로드하게 되어도 모델의 생성자가 호출안되더군요.

 

재로드 해서 생성자를 호출하게해줄수 있는 방법이 있을까요?

new 키워드 사용하는 것 말고요~

 

$this->session->set_userdata('a', 1);

$this->load->model('model_z');  // 생성자에서 $this->a = $this->session->userdata('a') 해주기 때문에 1이 들어감

$this->session->set_userdata('a', 2);

$this->load->model('model_z'); // 생성자가 호출되지 않음.

 

이런 코드가 지나고 model_z 함수 내부에서 

$this->a 를 했을 때 2를 보기를 원합니다

 

 

-----------------------------------------------------------------

 

첨부 사진을 봐주시면 Loader 클래스 내부에서 model 호출되었을 때 

기존에 로드한 모델이면 튕겨내는 것같습니다. 현재 CI 2.0 버전을 사용하고 있는데

상위버전에는 우회할수 있는 옵션같은게 있을까요?? ㅠ

꼭 상위 버전이 아니더라도 매번 새로운 인스턴스를 생성하는 방법이 있을까 고민됩니다.


첨부파일 zzzzz.PNG (2.9 KB)
 다음글 코드이그나이터 + Postgresql 연동 질문 (4)
 이전글 액티브 레코딩 관련 get_where() (1)

댓글

Nyquist / 2016/10/12 15:00:34 / 추천 0

다른 코드가 복잡하게 얽혀있어서 로드할때 모델 이름을 주는방식  // $this->load->mode('model_z', 'model_z1') 

은 사용할수 없었습니다....

Nyquist / 2016/10/12 15:01:36 / 추천 0
구글에 "ci load model call construct every times" 키워드로 검색해봤는데 소득이 없군요..
변종원(웅파) / 2016/10/12 15:52:05 / 추천 1
ci는 모델 중복 호출을 하지 않습니다. 생성자 말고 모델 내 함수로 처리하셔야 합니다.
kaido / 2016/10/12 15:58:46 / 추천 1

해보진 않았습니다만... 생성자로 불러오니  소멸자로 제거가 가능 하지 않을까요?

어차피 객체이니깐 말이죠.

해당 모델을 죽이고  다시 불러오면 가능 하지 않을까요?

개인적으로 어떤걸 하려는 건지는 알겠습니다만, 굳이 한다면 저도 웅파님 처럼 처리 할 것 같네요.

Nyquist / 2016/10/12 16:09:32 / 추천 0

변종원(웅파) // 확실한 답변 감사합니다 !

kaido // 소멸자를 사용한다고해도 Loader 클래스 안의 _ci_models 변수에는 로딩 이력이 남는 것 같습니다.... loader 클래스에서 CI 관리 하에 있는 클래스 소멸하는 기능을 제공하면 참 좋겠는데... 아무튼 성의있는 답변 감사드립니다 !