강좌게시판

제목 심플하게 hook 사용 방법
글쓴이 kaido 작성시각 2016/02/12 13:53:49
댓글 : 3 추천 : 0 스크랩 : 2 조회수 : 36330   RSS

※ 이 강좌는 CI 3.x 버전을 기준으로 작성 하였습니다.

 

우선 application/config/hooks.php 파일을 오픈

설정에

 

$hook['post_controller_constructor'] = array(
	'class'    => 'Header_init',
	'function' => 'inits',
	'filename' => 'Header_init.php',
	'filepath' => 'hooks'
);

 

class 명은 파일을 따라갑니다. [부여 설명은 생략 하겠습니다.]

function 은 해당 파일에서 사용할 함수 입니다.

filename 은 해당 파일명입니다.

filepath 는 저장된 폴더 명입니다. [딱히 이유가 없다면 변경 하지 마세요.]

 

$hook[''] <-- 여기에는 종류별로 존재 합니다.

pre_system, pre_controller,  post_controller_constructor, post_controller,  display_override,  cache_override,   post_system

 

이렇게 종류별로 있습니다.

요점은 타이밍의 차이입니다. 컨트롤러를 불러오기 전이냐. 불러오고 난 다음이나, 포스트를 하고 난 다음이냐, 캐쉬를 하고 난 다음이냐 기타 등등.

자세한 차이점은 구글링!

 

 

이제 application/hooks/ 폴더로 가서  파일명과 동일한 파일을 생성 합니다.

[Header_init.php 이라고 명시 했으니 동일하게 만듭니다.]

 

파일 안에는 이렇게 넣습니다.

 

class Header_init  {
	private $CI;

    function __construct()
    {
        $this->CI =& get_instance();

        if(!isset($this->CI->session)){  //Check if session lib is loaded or not
              $this->CI->load->library('session');  //If not loaded, then load it here
        }
    }


	public function inits(){
	
		$CI =& get_instance();
		$CI->load->library('session');	
		
              //렛츠 원하는 대로 즐프~
		
	}
}

 

 

 

끗. 참 쉽죠?

 

ps  CI 컨트롤러의 기본기능을 사용 하실분은 

class Header_init  extends CI_Controller {} 이렇게 선언 하고 사용.

다만 문제가 발생 할 수 있으니 컨트롤러의 기능이 필요치 않으신 분들은   extends CI_Controller  상속 부분은 제거 하고 사용하세요. 

 다음글 [ci 드라이버] 한국 pg(결제) 드라이버 만들기 (... (4)
 이전글 [ci 수정] 일반 PHP 프로젝트에 CI 적용하기 2 (2)

댓글

마PD / 2016/02/12 14:15:17 / 추천 0

오오오~~~!!!

감사합니다! 많이 헷갈렸는데

이젠 쓸 수 있어요 ㅜ.ㅜ

라이트에센스 / 2016/02/17 12:45:33 / 추천 0
마침 hook 보고 있었는데 깔끔하게 올려주셨네요! 감사합니다~!
쌈닭 / 2016/02/17 18:38:30 / 추천 0

config.php

$config['enable_hooks'] = TRUE;

혹시 깜빡하실까봐...^^;