микрозаймы онлайн займы на карту займы по паспорту

Utilizar ZendAMF com Laravel 3

Bem, com meu histórico de amor e ódio com o Flex Framework (mais amor, diga-se), uma das primeiras tentativas de integração Laravel foi com o ZendAMF, implementação do protocolo AMF feita pela equipe Zend.

Foi necessário gastar um pouco de tempo com pesquisa, mas no final a integração foi tranquila. Uma das características do Laravel que o fazem ser tão bom é a facilidade de integração com bibliotecas externas. Sabendo disso, bastou iniciar a integração, entender os pulos-do-gato e correr para o abraço.

Segue o roteiro, passo a passo:

1) O primeiro foi imaginar onde eu poderia acomodar a biblioteca. A pasta /application/libraries seria uma boa escolha, porém, como o ZendAMF é um pouco complexo, com diversas classes e pastas, optei por criar um bundle. Adotei esta abordagem por dois motivos: sendo um bundle, as classes do ZendAMF ficariam a disposição do Laravel (e vice-versa) e o bundle possui o arquivo start.php, que é executado cada vez que o bundle é executado.

Item 1

Item 1

2) Uma vez que a library foi adicionada na pasta /bundles, é necessário informar ao Laravel que o bundle existe e precisa ser executado. Isso é feito no arquivo /application/bundles.php.

Item 2 - informar ao Laravel que o bundle precisa ser iniciado

Item 2 – informar ao Laravel que o bundle precisa ser iniciado

3) Agora, no arquivo start.php do bundle, adiciona-se a pasta library do ZendAMF ao class path do PHP. Isso é um tanto estranho, mas o ZendAMF é meio estúpido com includes. Melhor não brigar com gente estúpida. Utilizando a classe Autoloader do Laravel, adiciona-se os diretórios do Bundle que se precisa ter acesso pelo Laravel.

Item 3) Adiciona-se a pasta library ao class path do PHP

4) Agora é preciso criar uma URL para funcionar como gateway para chamadas a partir do Flex. Para simplificar as coisas, criei uma rota diretamente no arquivo application/routes.php, chamando-a de ‘/amf’ e ali no closure, criei uma instância do ZendAMF Server. Será ali também que abrirei acesso às classes que serão acessadas pelo Flex (VOs incluídos). É importante notar que a rota responderá a uma chamada POST, que é o verbo HTTP utilizado pelo RemoteObject do Flex. Para utilizar, basta colocar sua URL no RemoteObject do Flex. Ex.: endpoint=”http://<sua_url>/amf”.

Item 4) Cria-se a rota e nela o server AMF

Item 4) Cria-se a rota e nela o server AMF

5) Para manter nosso código organizado, criaremos nossas classes expostas ao Flex dentro de nosso bundle. Como estamos trabalhando com Laravel, todas as classes deste estão disponíveis para o bundle, sem que se precise fazer nada especial. No exemplo abaixo, foi utilizado um model chamado Produto, que estende Eloquent.

Item 5) A classe exposta ao Flex

6) Para finalizar (e este passo é opcional), é preciso adicionar à resposta que esta é do tipo AMF. Ter ou não esta informação não faz qualquer diferença ao Flex, porém, se você utiliza para debug uma ferramenta como Charles Proxy, este não exibe corretamente os dados caso o Content-Type não se passado como application/x-amf. Para isso, basta criar na rota ‘/amf’ um filtro do tipo after e ali determinar o Content-Type.

Item 6) Adiciona-se o Content-Type à resposta HTTP

Item 6) Adiciona-se o Content-Type à resposta HTTP

E é isso!

Vale lembrar que o mesmo procedimento pode ser utilizado para outros componentes do Zend Framework. Basta tentar!

Grande abraço,

Vedovelli
http://twitter.com.br/vedovelli
http://blog.vedovelli.com.br/
http://youtube.com/vedovelli
http://vimeo.com/vedovelli