Eventos com Codeigniter 3, criando nossa biblioteca de eventos.
Carlos Carvalho
1

Eventos com Codeigniter 3, refatorando nosso código.

Seguindo com o que falamos no último assunto.
Nossa código estava legal, mas quando fizemos uma nova validação do que fizemos, percebemos que nosso código teriam uma manutenção muito complicado no futuro.

Mas como podemos refatorar nosso código ?

Alguns frameworks tem os chamados ServiceProviders, que ajudam a registrar serviços e podem ser usados com diversos propósitos.
Essas classes geralmente registram um configuração para determinados pacotes instalados no projeto, auxiliando em tarefas repetitivas.
Mas o Codeigniter não tem esses carinhas ai, então como fazer ?

Vamos usar o que temos então no framework. E o que temos então ? Existem uma rotina de hooks no Codeigniter que poderão nos ajudar nesse processo. Então mãos no teclado.

Primeiro precisamos altera nosso application/config/config.php e habilitar o hooks. Procure por essa configuração no arquivo defina como true.

Agora vamos fazer uma configuração em nosso arquivo application/config/hooks.php.

Veja como vai ficar.

Aqui estamos informando ao sistema que todas as vezes que o construtor da classe que estamos usando for instanciada, vamos precisar que o sistema instancie a classe RegisterEventAutoload e execute o método handler.
O filename é o arquivo que precisa ser carregado. 
O filepath é a pasta onde fica o arquivo.

Apresentando nosso arquivo reponsável pelo registro automático de nossos eventos.

Explicando
Nosso método handler irá carregar um arquivo em config onde ficarão todos os nossos registros de eventos assim poderemos ter um controle e saber onde estão todos.
Agora sim, temos um lugar onde poderemos adicionar ou remover eventos ou classes.

Vamos para o último passo do nosso esquema, criar o arquivo application/config/register_events.php.

Vejamos agora que nosso temos algo bem mais claro.
Temos um lugar onde concentramos todos os eventos.
Assim podemos editar tranquilamente as coisas por aqui.
E como podemos notar, teremos sempre nossas eventos dentro de namespace deixando ainda melhor nosso código para fins de manutenção.

E por fim agora vamos refatorar nosso controller que ficará assim.

Agora independe a quantidade de lugares na nossa aplicação onde os nossos eventos serão disparados.
A nosso vida vai ficar um pouco mais fácil.

Então é isso.