Code Igniter User Guide Version 1.4.0


Hooks - Extending the Framework Core

Code Igniter's Hooks feature provides a means to tap into and modify the inner workings of the framework without hacking the core files. When Code Igniter runs it follows a specific execution process, diagramed in the Application Flow page. There may be instances, however, where you'd like to cause some action to take place at a particular stage in the execution process. For example, you might want to run a script right before your controllers get loaded, or right after, or you might want to trigger one of your own scripts in some other location.

Defining a Hook

Hooks are defined in application/config/hooks.php file. Each hook is specified as an array with this prototype:

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

Notes:
The array index correlates to the name of the particular hook point you want to use. In the above example the hook point is pre_controller. A list of hook points is found below. The following items should be defined in your associative hook array:

Multiple Calls to the Same Hook

If want to use the same hook point with more then one script, simply make your array declaration multi-dimensional, like this: $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')
                                );

Notice the brackets after each array index:

$hook['pre_controller'][]

This permits you to the same hook point with multiple scripts. The order you define your array will be the execution order.

Hook Points

The following is a list of available hook points.