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.
Como havia dito antes, vou mostar um exemplo de uso com relacionamentos.
Neste exemplo, estou assumindo que:
O objetivo é mostrar como os relacionamentos podem ser criados com Lumine, de forma rápida e orientada a objetos.
Esse final de semana foi de grandes melhorias no Lumine, principamente para desenvolvimento com Ajax e AMF!
Agora é possível enviar os elementos serializados em JSON utilizando os métodos toJSON e allToJSON! Assim, você não precisa mais fazer uma iteração para recuperar os elementos no formato necessário para envio via Ajax!
Para quem gosta de utilizar Flex com AMF, outra atualização muito interessante.
No momento em que você realizar a engenharia reversa, você tem a opção de gerar as classes DTO (ou VO) para sua entidades de negócio. Além disso, foram criados dois métodos: toObject e allToObject.
A grande vantagem destes dois métodos, quando utilizando DTO's, é que você pode setar na configuração de Lumine para que ele faça o cast automaticamente para o tipo de dados (classe) correspondente. E também nesta engenharia o DTO gerado já vem com o atributo $_explicitType. Assim, ficou ainda mais fácil integrar com RemoteObject.
Hoje, vou mostrar um exemplo bem básico de como trabalhar com Lumine, Zend_Amf e Flex.
Muitas pessoas tem me perguntado como se fazer sub-select utilizando Lumine.
De uma forma simples, hoje Lumine não tem suporte a sub-select's, mas você pode fazê-la de outras formas.
Hoje vou mostrar de duas formas: uma utilizando in e not in e outra com concatenação de strings.
Uma coisa bem bacana (que eu tenho que tomar vergonha cara e arrumar tempo para documentar) é parte de ouvintes do Lumine.
Hoje vou mostrar de forma rápida como monitorar erros de SQL mal-formados. Para isso, basta você escrever uma função que mostre o erro na tela, formatando da maneira desejada:
function FormataErro( $connObj, $sql, $errorMsg )
{
echo 'Houve um erro na tentativa de executar o comando abaixo: <br />';
echo '<pre>' . $sql . '</pre>';
echo '--------------------------------<br />';
echo 'Error retornado pelo banco: ' . $errorMsg;
}
Depois, onde você inicializa a configuração, basta indicar o ouvinte no objeto de conexão:
$conf = new Lumine_Configuration( $lumineConfig );
$conf->getConnection()->addEventListener('onExecuteError', 'FormataError');
Em toda consulta que não for bem-sucedida, Lumine irá disparar um evento (onExecuteError) com 3 parâmetros: o objeto de conexão $connObj, o comando SQL executado $sql e o erro do banco $errorMsg
@braços e fiquem com Deus!