CodeIgniter User Guide Version 2.0.0


Хуки — расширение ядра фреймворка

Хуки дают средства для изменения внутренней работы фреймворка без взлома системных файлов. Как работает CodeIgniter схематически отражено на странице Выполнение приложения. Возможно, что вы захотите совершить некоторые действия в процессе выполнения. Например, вы можете запустить скрипт прямо перед тем, как будет загружен контроллер, или сразу после, или вы хотите запустить один из ваших скриптов в другом месте.

Включение хуков

Хуки могут быть глобально включены и выключены посредством установки соответствующего элемента в файле конфигурации application/config/config.php:

$config['enable_hooks'] = TRUE;

Определение хука

Хуки определяются в файле application/config/hooks.php. Каждый хук указывается как массив, в соответствии с этим прототипом:

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

Примечание:
Индекс массива соответствует имени конкретной точки для установки хука, которую вы хотите использовать. В примере выше, точка установки хука — pre_controller. Список доступных точек ниже. Следующие элементы должны быть определены в ассоциативном массиве хука:

Множественные вызовы различных хуков

Если вы хотите использовать несколько хуков, просто сделайте многомерный массив:

$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'][]

Это позволит вам вызвать в определенной точке хука несколько скриптов. Они будут исполняться в том порядке, в котором вы указали.

Точки хуков

Вот список доступных точек.