Podręcznik użytkownika CodeIgniter wersja 2.2.1


Hooki - Rozszerzanie frameworka

Hooki w CodeIgniter pozwalają na wpięcie się i modyfikację wewnętrznych procesów działania frameworka, bez potrzeby zmieniania plików źródłowych. Kiedy uruchamiany jest CodeIgniter, wykonywane są następuje po sobie procesy, które można zobaczyć na diagramie schematu działanai aplikacji. W określonym momencie wykonywania poszczególnych procesów, mamy możliwość wykonania naszego własnego kodu. Dla przykładu, możemy chceć wykonać jakiś skrypt zaraz przed/po tym jak załadowany zostanie kontroler lub wykonać skrypt, który znajduje się w innej lokalizacji.

Włączanie hooków

Hooki mogą zostać włączone/wyłączone globalnie, poprzez ustawienie następującej opcji w pliku application/config/config.php:

$config['enable_hooks'] = TRUE;

Definiowanie hooka

Definicje hooks znajduja się w pliku application/config/hooks.php file. Każdy hook jest określany za pomocą tablicy, w ten sposób:

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

Uwagi:
Indeks tablicy odpowiada konkretnemu hookowi, którego chcesz użyć. W powyższym przykładzie hook wskazuje na pre_controller. Listę dostępnych punktów możesz znaleźć poniżej. W tablicy asocjacyjnej definiującej hook, powinny znaleźć się następujące elementy:

Wiele odwołań do tego samego hooka

Jeśli chcesz użyć tego samego hooka, z więcej niż jednym skryptem wystarczy, że zadeklaryjesz tablicę jako wielowymiarową, w ten sposób:

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

Zwróć uwagę na nawias kwadratowy, po każdym indeksie tablicy:

$hook['pre_controller'][]

To pozwala na posiadanie jednego hooku, który wywołuje wiele skryptów. Kolejność wykonywania skryptów, zależy od kolejności ich deklaracji.

Dostępne hooki

Poniżej znajduje się lista dostępnych hooków.