CI 묻고 답하기

제목 hook 에서 pre_controller 사용시, get_instance 불러들이는 방법
카테고리 CI 2, 3
글쓴이 kej 작성시각 2017/01/16 10:09:29
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 18942   RSS

hook을 지금 사용하고있는데요.

pre_controller 에서 cache 드라이버랑 세션 라이브러리를 사용하려고 합니다.

제가 Codeigniter 사용한지는 별로안되서 잘 개념이안잡혀있긴하는데

제가 사용하려고 한 두개는 get_instance를 불러들인 후에 사용가능하다고 알고있는데요.

pre_controller 에서는 get_instance 를 불러드려도 아무런 값을 가져오지않습니다.

 

https://forum.codeigniter.com/archive/index.php?thread-38313.html

모든 글들을 참고하는데

pre_system, pre_controller 에서는 사용 불가능하다고 하더라구요,

 

pre_controller 에서 드라이버나 라이브러리를 사용하는방법을 아시는분들 알려주세요..ㅠㅠ

계속 찾아봤는데도 모르겠어서 여기에 글을 남깁니다.

 다음글 CI_Controller not found 문제..... (5)
 이전글 공통적으로 사용하는 함수의 경우 하나의 모델에 모아서 ... (3)

댓글

kaido / 2017/01/16 11:37:58 / 추천 0

hook 클래스 자체에 CI_controller 를 상속 받아오시면 가능하지 않을까 생각 듭니다.

class Hook_init  extends CI_Controller {}

이전에 이렇게 사용 하라고 안내를 해드린적 있었는데, 충돌이 일어난다고 클레임을 거시는 분이 계셔서 

상속 해서 쓰지 말라고 알려드리고 있습니다.

 

컨트롤러에서 충돌이 났다고 하니, 아마 해당 컨트롤러들이 상속되어 있는 드라이버나 라이브러리도 같이 불러오실수 있을 겁니다.

 

참고.

http://cikorea.net/bbs/view/lecture?idx=12894&page=1&view_category=&lists_style=

kej / 2017/01/16 12:59:40 / 추천 0

@kaido

확인 감사합니다~! 제가 근데 참고 링크도 참조해봤었는데요

extends 해도.. 똑같은 에러가 뜨더라구요..

hook 에서 불러들이는 function 에서

        $this->ci =& get_instance();
        $this->ci->load->driver('cache', array('adapter' => 'file'));

소스를 적었더니..

에러 내용은 Message: Trying to get property of non-object

이런메세지가 나옵니다.

혹시 ㅠㅠ pre_controller 일때 hook 사용해보신적잇는분들 알려주세요..

몇일째 이걸로 고민하고있어요

kaido / 2017/01/16 15:39:57 / 추천 1

확인해 보았습니다만  CI 자체 기능으로는 없는게 맞습니다.

로더에서 라이브러리들을 가져와야하는데 pre controller 로 후크를 걸면 가져오질 않습니다.

 

굳이 하셔야 한다면 객체를 직접 호출 하셔야만 합니다.

<?
require realpath(FCPATH) . '/system/core/Loader.php';
require realpath(FCPATH) . '/system/libraries/Driver.php';



$d = new CI_Driver();
		print_r($d);


?>

 

문제는 이게 한번 테스트해보니, 로드 시켜야 할것이 한두가지가 아닙니다.

CI4 이라면 그나마 가능하겠는데 CI3 이하에서는 안하는시는게 좋을거라 판단 되네요....

한대승(불의회상) / 2017/01/17 12:19:34 / 추천 1

CI 컨트롤러와 라이브러리가 로드된 상태에서 hook을 통하여 작업을 하고 싶다면 post_controller_constructor 에 걸어 주시면 됩니다.