Back-End

4 nov, 2009

Sobrescrevendo métodos do CodeIgniter sem perder suas funcionalidades originais

Publicidade

Leia os artigos anteriores:

Operações de banco de dados com o CodeIgniter

Framework CodeIgniter: motivos e modo de usar

*

Vamos continuar a seqüência de artigos sobre o fremework CodeIgniter. No último artigo falei sobre o uso de banco de dados com o CI; hoje veremos como podemos estender uma classe padrão do CI para adicionar métodos mais específicos para um determinado projeto, ou mesmo para vários projetos.

O CodeIgniter possui uma característica interessante e muito simples de ser utilizada. Vamos supor que queremos adicionar algo a uma função do core do CI, mas não queremos perder a função em si, já que ela possui diversas coisas embutidas na própria classe. Acrescentando a isso, supomos também que essa funcionalidade nova será útil em todo o projeto. Para isso, o CI possui uma forma rápida e prática de se aproveitar da herança (orientação a objetos) para que, com poucos passos, seja criada uma classe intermediária, que servirá como substituta da classe original, mas sem perder todas as outras coisas já implementadas na classe original, e ainda sem que seja necessária a alteração de todas as referências que já estão chamando a classe original, ou seja, essa alteração não irá afetar em nada o restante do site em produção.

Para o nosso exemplo, vamos adicionar um problema simples: queremos que para cada arquivo da camada view que for chamada, seja possível ser identificado que arquivo está sendo parseado, através do código-fonte. Essa prática é utilizada em muitos lugares para que seja fácil a identificação de qual arquivo precisa ser alterado em determinado módulo do site.

Na prática, vamos adicionar um comentário em formato html dessa maneira (supondo que o arquivo sendo visualizado no momento seja o admin/usuario/add.php):

Dessa maneira é mais simples a manutenção da camada view do site.

Nos artigos anteriores já foi mostrado um pouco de como funciona comando view(), hoje vamos continuar usando essa chamada ao método view, mas vamos criar uma camada intermediária com a nossa versão nessa camada.

O método view está localizado na classe pré-carregada: Loader, e ele possui a seguinte assinatura:

view( String, Array/Object, Boolean )

Os dois primeiros parâmetros já foram utilizados nos artigos anteriores, servem como o caminho do arquivo php que será a visualizado e um array ou object (que internamente se transforma em array) com os dados que estarão visíveis dentro da view. Esse terceiro parâmetro é um valor do tipo boolean que indica se deseja que o template não seja exibido no browser, mas sim seja retornado seu valor como uma string para alguma variável de retorno qualquer, o padrão é false, ou seja, o padrão joga o conteúdo no browser.