In this codeigniter hooks tutorial – we would love to share with you how to implement custom hooks and active this hooks. In this tutorial you will learn about hooks and it’s uses.
CodeIgniter Hooks
CodeIgniter hook allows you to execute a script with the specific path within the CodeIgniter execution process without updating or modifying core files. If you need to execute a code that should be run every time after the controller is created, then you specify that script path in the hook.
CodeIgniter’s hook feature is a means of tapping and modifying the internal workings of the framework without hacking core files.
Enabling Hooks
The hook feature can be enabled / disabled globally, which can set the following item in the app / config / config.php file.
$config['enable_hooks'] = TRUE;
Defining a Hook
The hooks are defined in the app / config / hooksf file. Each hook is specified as an array with this prototype:
$hook['pre_controller'] = array( 'class' => 'MyHook', 'function' => 'Myfunction', 'filename' => 'MyHook.php', 'filepath' => 'hooks', 'params' => array('element1', 'element2', 'element3') );
Multiple calls to the same Hook
You can use multi-dimensional array to use the same hook point with more than one script, like this:
$hook['pre_controller'][] = array( 'class' => 'MyClass', 'function' => 'Myfunction', 'filename' => 'Myclass.php', 'filepath' => 'hooks', 'params' => array('element1', 'element2', 'element3') ); $hook['pre_controller'][] = array( 'class' => 'MyClass2', 'function' => 'Myfunction2', 'filename' => 'Myclass2.php', 'filepath' => 'hooks', 'params' => array('element4', 'element5', 'element6') );
Hook Points
Hook Example
Using a text editor, create a controller called Test.php. In it, place this code and save it to your application/controllers/
directory:
<?php class Test extends CI_Controller { public function index() { echo " world !"; } } ?>
Using a text editor, create a controller called myhook.php. In it, place this code and save it to your application/hooks/
directory:
<?php class Myhook extends CI_Controller { public function index() { echo "Hello"; } } ?>
We need to define the hooks in the application/config/hooks
directory:
$hook['pre_controller'] = array( 'class' => 'Myhook', 'function' => 'index', 'filename' => 'Myhook.php', 'filepath' => 'hooks', 'params' => array() );
Now open your site using a URL similar to this one:
http://localhost/codeigniter/index.php/test/index