Hooks

Programming/CodeIgniter 2011. 11. 11. 19:39

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')
    );

호출할 클래스, 함수, 파일명, 파일경로, 파라미터를 기록하면 됩니다.
파일경로는 application 디렉토리명을 생략하고, 파라미터는 옵션입니다.

동일한 hook 포인트에서 하나 이상의 스크립트를 사용할 때에는 다차원 배열 선언을 합니다.

$hook['pre_controller'][] = array(...script1...);
$hook['pre_controller'][] = array(...script2...);

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,