hook는 CodeIgniter의 처리순서 사이에 원하는 기능을 수행하고 싶을 때 사용합니다.
1. Hook 포인트
- pre_system : 시스템 실행 초기 단계. 벤치마크와 hook 클래스만 로드된 시점.
- pre_controller : 컨트롤러가 호출되기 직전. 기본 클래스, 라우팅, 보안점검 완료.
- post_controller_constructor : 컨트롤러가 인스턴스화 된 직후. 호출된 메소드 없음.
- post_controller : 컨트롤러가 완전히 실행된 직후입니다.
- display_override : 웹브라우저에 완료된 페이지를 보내기 위해 _display() 함수 오버라이드.
- cache_override : _display_cache() 함수 대신 사용할 사용자 함수 호출 가능.
- post_system : 마지막 렌더링된 페이지가 브라우저에 보내진 후에 호출됨.
2. Hook 사용
hook를 사용하려면 application/config/config.php 파일을 수정합니다.
$config['enable_hooks'] = TRUE;
3. Hook 정의
hook 은 application/config/hooks.php 파일에 정의되며, 각 hook는 배열 프로토타입으로 지정됩니다.
$hook['pre_controller'] = array(
'class' => 'MyClass',
'function' => 'Myfunction',
'filename' => 'Myclass.php',
'filepath' => 'hooks',
'params' => array('beer', 'wine', 'snacks')
);
'class' => 'MyClass',
'function' => 'Myfunction',
'filename' => 'Myclass.php',
'filepath' => 'hooks',
'params' => array('beer', 'wine', 'snacks')
);
호출할 클래스, 함수, 파일명, 파일경로, 파라미터를 기록하면 됩니다.
파일경로는 application 디렉토리명을 생략하고, 파라미터는 옵션입니다.
동일한 hook 포인트에서 하나 이상의 스크립트를 사용할 때에는 다차원 배열 선언을 합니다.
$hook['pre_controller'][] = array(...script1...);
$hook['pre_controller'][] = array(...script2...);
$hook['pre_controller'][] = array(...script2...);
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.
,