Code Igniter Versão 1.5.2 - Guia do Usuário


Ganchos - Estendendo o Núcleo do Framework

O recurso de Ganchos do Code Iginiter provê uma maneira de acessar e modificar os processos internos do framework sem hackear os arquivos base. Quando o Code Igniter roda, ele segue um específico processo de execução, diagramado na página do Fluxograma da Aplicação. Haverá momentos, no entanto, onde você queira que alguma ação seja executada em um estágio particular do processo de execução. Por exemplo, você pode querer rodar um script logo antes do seu controller ser carregado, o logo depois, ou você pode querer disparar um de seus próprios scripts em algum outro lugar.

Habilitando os Ganchos

O recurso de ganchos pode ser habilitado/desabilitado globalmente, configurando-se o seguinte item no arquivo application/config/config.php:

$config['enable_hooks'] = TRUE;

Definindo um Gancho

Ganchos são definidos no arquivo application/config/hooks.php. Cada um é especificado como uma array com esse protótipo:

$hook['pre_controller'] = array(
                                'class'    => 'MinhaClasse',
                                'function' => 'MinhaClasse',
                                'filename' => 'MinhaClasse.php',
                                'filepath' => 'MinhaClasse',
                                'params'   => array('cerveja', 'vinho', 'salgadinhos')
                                );

Notas:
O índice da array corresponde ao nome do particular ponto de gancho que você queira usar. No exemplo acima, o ponto de gancho é pre_controller. Uma lista de pontos de ganchos aparece abaixo. Os seguintes itens devem ser definidos em sua array de gancho associada:

Múltiplas chamadas para o mesmo Gancho

Se você quer usar o mesmo ponto de gancho em mais de um script, simplemente faça sua array multi-dimensional, como esta: $hook['pre_controller'][] = array(
                                'class'    => 'MinhaClasse',
                                'function' => 'MinhaClasse',
                                'filename' => 'MinhaClasse.php',
                                'filepath' => 'MinhaClasse',
                                'params'   => array('cerveja', 'vinho', 'salgadinhos')
                                );

$hook['pre_controller'][] = array(
                                'class'    => 'MinhaOutraClasse',
                                'function' => 'MinhaOutraFuncao',
                                'filename' => 'MinhaOutraClasse.php',
                                'filepath' => 'ganchos',
                                'params'   => array('vermelho', 'amarelo', 'azul')
                                );

Note os colchetes após cada indíce da array:

$hook['pre_controller'][]

Isto permite que você use o mesmo ponto de gancho com múltiplos scripts. A ordem que você definir em sua array será a ordem de execução.

Pontos de Gancho

Abaixo está uma lista dos pontos disponíveis.