HUFERSIL.WEBDEVELOPER

Lumine – Formatadores

Hoje vamos falar um pouco sobre os formatadores.
Seu comportamento mudou nas versões mais recentes de Lumine, isto porque, nas versões anteriores os membros da classe não eram explicitamente declarados, assim quando você chamava um atributo que não existia, o método mágico __get era disparado, e internamente, os formatadores eram executados para então retornar o valor formatado.

Para fazer com que os formatadores funcionem de forma correta, você deve chamar o método Lumine_Base::addFormatter( $member, $formatter ).

Depois de adicionados os formatadores, eles serão executados quando chamados um dos metódos a seguir:

  • toArray
  • toObject
  • toXML
  • toJSON
  • allToArray
  • allToObject
  • allToXML
  • allToJSON
  • formattedValue( $member )

Se você chamar diretamente o membro ($obj->membro), os formatadores não serão executados.

Outro fator muito legal é que sempre que um formatador está prestes a ser executado e depois de sua execução, ele dispara eventos (preFormat e posFormat). Assim você consegue capturar os valores antes e depois da execução, exemplo:  

// criamos a funcao para formatar a data
function formatadaDataBrasil($data){
   return preg_replace('@^(\d{4})-(\d{2})-(\d{2})$@','$3/$2/$1',$data);
}

// pre-formatador
function pre_format($objRef, $oldValue){
   echo 'Valor a ser alterado: '.$oldValue.'<br>';
}

// pos-formatador
function pos_format($objRef, $oldValue, $newValue){
   echo 'Valor novo: '.$newValue.'<br>';
}

// cria o objeto de pessoa
$obj = new Pessoa;
// adiciona o formatador
$obj->addFormatter('dataNascimento', 'formatadaDataBrasil');
// adiciona os ouvintes
$obj->addEventListener('preFormat', 'pre_format');
$obj->addEventListener('posFormat', 'pos_format');
// pega a pessoa de codigo 1
$obj->get(1);

// exibe a data de nascimento
echo $obj->formattedValue('dataNascimento');
// ou pega do array
$arr = $obj->toArray();
echo $arr['dataNascimento'];

@braços e fiquem com Deus!

Deixar uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

*

Pode usar estas etiquetas HTML e atributos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">