CodeIgniter User Guide Version 2.1.0


후킹-프레임워크 코어확장 Hooks - Extending the Framework Core

CodeIgniter의 후킹기능은 코어파일들을 해킹하지 않고도 내부작동방식을 변경할 수 있도록 합니다. CodeIgniter가 작동하기 시작하면 동작개념도에 설명된 처리순서에 따라서 일을 처리합니다. 그러나, 당신은 특정한 순서에서 처리하는 방식을 새롭게 바꾸고 싶을수도 있습니다. 예를들어, 당신은 컨트롤러가 로드되기전에 특정한 기능이 수행되도록 하고싶거나, 혹은 특정순서중에 당신만의 기능이 수행되도록 하고싶을 수도 있습니다.

후킹 활성화 (Enabling Hooks)

후킹은 글로벌로 동작하며 application/config/config.php 파일에 있는 아래변수를 통해서 활성화 가능합니다.:

$config['enable_hooks'] = TRUE;

후크 정의 (Defining a Hook)

후크는 application/config/hooks.php 파일에 정의되어있습니다.각후크는 아래의 형태로 정의됩니다:

$hook['pre_controller'] = array(
                                'class'    => 'MyClass',
                                'function' => 'Myfunction',
                                'filename' => 'Myclass.php',
                                'filepath' => 'hooks',
                                'params'   => array('beer', 'wine', 'snacks')
                                );

주의:배열의 인덱스는 여러분이 사용하고자하는 후크포인트의 이름과 연관됩니다. 위 예제의경우에 후크포인트는 pre_controller 가 됩니다. 후크포인트의 목록은 아래에 있습니다. 다음 아이템들은 당신의 연관후크배열에 반드시 정의되어야 합니다.

동일한 후크포인트에서 여러 후크 호출하기 Multiple Calls to the Same Hook

같은 후크포인트를 하나이상의 스크립트에서 사용하고싶다면 간단히 배열정의를 다차원으로 합니다.

예제:

$hook['pre_controller'][] = array(
                                'class'    => 'MyClass',
                                'function' => 'Myfunction',
                                'filename' => 'Myclass.php',
                                'filepath' => 'hooks',
                                'params'   => array('beer', 'wine', 'snacks')
                                );

$hook['pre_controller'][] = array(
                                'class'    => 'MyOtherClass',
                                'function' => 'MyOtherfunction',
                                'filename' => 'Myotherclass.php',
                                'filepath' => 'hooks',
                                'params'   => array('red', 'yellow', 'blue')
                                );

주의할것은 대괄호([])가 각 배열 인덱스뒤에 있다는점입니다.:

$hook['pre_controller'][]

이것을 이용하면 다양한 스크립트를 같은 후크포인트로 사용할 수 있습니다. 배열의 순서는 처리순서가 될것입니다.

후크포인트 Hook Points

다음은 가능한 후크포인트 목록입니다..