Utilizando métodos de callback no CakePHP

Veja neste artigo quais são e como utilizar os métodos de callback na camada model do framework CakePHP.

Sabe quando queremos fazer uma coisa sempre quando outra acontece? Por exemplo, antes de fazer alguma coisa no model, fazer uma chamada aos métodos para salvar, buscar e excluir. Nesses casos, podemos sobrescrever os métodos de callback, os quais são apresentados a seguir.

Podemos sobrescrevê-los tanto nos model’s quanto no AppModel para tornar as mudanças globais. Vamos ver cada um deles agora.

BeforeFind

Esse método é chamado antes de toda função find().

A variável $queryData carrega informações sobre a query, como condições e campos.

Dentro de seu corpo podemos fazer, por exemplo, uma validação e parar a chamada baseada na mesma.

Listagem 1: Sobrescrita do método beforeFind.

public function beforeFinder($queryData){ if(empty($queryData)) return false; }

AfterFind

Como podemos presumir, ela é chamada depois da função find(). Podemos usá-la para alterar o resultado da consulta, ou, mais uma validação.

A variável $results traz um array com os resultados no formato padrão do cake.

Listagem 2: sobrescrita de afterFind

public function afterFind($results) { foreach ($results as $key => $val) { if (isset($val['Event']['begindate'])) { $results[$key]['Event']['begindate'] = $this->dateFormatAfterFind($val['Event']['begindate']); } } return $results; } public function dateFormatAfterFind($dateString) { return date('d-m-Y', strtotime($dateString)); }

BeforeValidate

Usado antes das validações. Aqui podemos modificar os dados dos modelos ou modificar as regras de validações. Lembrando que sempre devemos retornar true, se for o caso, ou a função a ser chamada após esta será abortada.

BeforeSave

Aqui podemos escrever qualquer lógica para ser executada antes da inserção. A única coisa com a qual devemos nos preocupar é retornar true, novamente se for o caso, ou então a função save() será parada.

AfterSave

Utiliza-se este método para qualquer lógica ser executada depois de salvar os dados.

O valor de $created será true se um novo objeto foi criado em vez de atualizado.

BeforeDelete

A variável $cascade será true se os registros que dependem deste deverão ser deletados também.

AfterDelete

Para executar qualquer lógica após a exclusão de dados.

OnError

Este método é chamado se qualquer problema ocorrer.

Conclusão

Portanto podemos observar que os métodos têm praticamente a mesma estrutura e mesmas funções, entre elas: Validar, converter e formatar. São autoexplicativos, ou seja, seus nomes já indicam o que fazem.

Os callbacks são de uso muito simples, porém eficaz, sabendo usá-los tiraremos ótimo proveito dos mesmos quando se diz respeito ao reaproveitamento do código.

Então é isso, espero que tenham gostado, deixem seus comentários e até a próxima.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados