Terça-feira, 15 de setembro de 2009 às 11h15

Flex e PHP com Zend Framework

Nota do colunista:
Olá, pessoal! É com bastante entusiasmo que comunico a minha volta ao iMasters! Desde 2003 tenho escrito artigos dos mais variados assuntos, sempre buscando tecnologias emergentes e que possam, de certa forma, ajudar a comunidade e contribuir com o aprendizado de todos. Minha linha de artigos será baseada sempre no Flex, e ocasionalmente outras tecnologias como .NET, extjs e php. Não deixem de sugerir novos temas através do meu email daniel.schmitz at hotmail.com. Aproveitem!!

Neste artigo iremos elaborar rapidamente uma forma de conexão entre o Flex e o PHP, através do consagrado Zend Framework, que é um conjunto de bibliotecas (muito coesas) que podem ser utilizadas para as mais diversas finalidades, desde a criação de sistemas MVC, à utilização de APIs para o Twitter.

Para que o Flex e o PHP possam "trocar dados", é preciso inicialmente preparar um ambiente baseado na instalação dos seguintes requisitos:

  1. Flex Builder ou Flex SDK: Utilizado para criar as aplicações em Flex e gerar a compilação necessária para disponibilizar o flex na aplicação web.
  2. Servidor Web: Iremos utilizar o WAMP Server, uma das melhores soluções para servidores web com fins puramente de teste.
  3. Zend Framework

Estes três requisitos podem ser facilmente instalados, possuindo diversos tutoriais espalhados na Net. Não é escopo desse artigo exibir a instalação destes. Caso tenha dúvidas ou problemas, entre em contato comigo, quem sabe o tema não mereça um artigo próprio.

Com o servidor web funcionando, crie uma pasta em c:\wamp\www\FlexZendTeste e adicione um Projeto Flex com o mesmo nome nesta pasta. Como resultado temos a seguinte imagem:

Após criar o projeto, clique no botão RUN (Setinha verde) e veja o seguinte resultado:


Ou seja, o Flex Builder criou toda a compilação necessária (arquivos html, swf, etc) para rodar a aplicação. A primeira mudança no nosso projeto será fazer o Flex abrir um endereço válido, ao invés do "c:\.......".

Clique com o botão direito do mouse no projeto e escolha o item "Properties". Navegue até o item "Flex Build Path" e no campo "Output folder URL" coloque o seguinte texto:

http://localhost/FlexZendTeste/bin-debug/


 Clique em OK e rode novamente o projeto. Agora o browser é aberto com o endereço certo:


 Agora vamos providenciar a instalação do Zend Framework. Baixe a última versão estável do site (Zend Minimal) e, após descompactar o arquivo ZIP, copie a pasta "library/Zend" para:

C:\wamp\www\FlexZendTeste\bin-debug

Após copiar o Zend Framework, criamos o arquivo "server.php" na pasta bin-debug. Este arquivo contém o seguinte código:


 Neste arquivo, criamos o Zend Autoloader (linhas 4 e 5) para que todas as bibliotecas do Zend sejam carregadas automaticamente.

Na linha 8 criamos o Zend_Amf_Server, que é responsável por prover a comunicação entre o Flex e o Zend, utilizando o protocolo AMF.

Na linha 11 adicionamos o diretório corrente (do arquivo Server.php) para ser o diretório que contém as classes em PHP que o Flex irá chamar.

Na linha 14 é renderizada a resposta ao Flex, utilizando o protocolo AMF.

Após criar este arquivo, devemos configurar outro arquivo no Flex, que é responsável em "ligar" o Flex ao PHP. Esse arquivo é um XML de configuração chamado services-config.xml que deve ser salvo na pasta "src" do projeto Flex.

O arquivo está descrito a seguir:


As partes mais importantes desse arquivo são a linha 6 e a 18. Na 6, criamos um destino, no qual colocamos o nome "zend". Pode ser qualquer nome, ok? Na linha 18 configuramos o atributo uri, que irá apontar para o arquivo server.php

Após criar o arquivo XML, abra novamente as propriedades do projeto e navegue até o item "Flex Compiler". Adicione a seguinte configuração:


Agora que a estrutura inicial está pronta, podemos iniciar os testes. Crie um arquivo chamado ZendTest.php na pasta bin-debug. Coloque o seguinte texto:


 
Pode-se ver que é um arquivo simples, contendo uma classe, obrigatoriamente com o mesmo nome do arquivo, e um método "SayHello". Após criar esta classe, iremos chamá-la pelo Flex, configurando o arquivo FlexZendText.mxml da seguinte forma:


 
Na linha 17, criamos o objeto RemoteObject que é responsável em conectar no PHP através do protocolo AMF. O atributo destination (linha 19) aponta para o destination do XML de configuração (linha 6 do XML da figura services-config.xml).

O atributo source (linha 20) aponta para a classe PHP que será chamada, nesse caso, ZendTest. O evento result (linha 21) irá disparar o método OnResult (linha 9), que por sua vez irá exibir uma mensagem com o parâmetro event.result.toString() (linha 11). Este evento é disparado quando o PHP retornar com os dados para o Flex.

O Button na linha 24 possui, em seu evento click, uma chamada para o método SayHello do arquivo ZendTest.php.

Após estas configurações, basta executar o projeto e clicar no botão. O resulto é este:

Caso tenha algum problema, não deixe de rever o artigo e realizar os passos necessários. Segue um checklist de problemas que podem ocorrer. Verifique:

  1. se o WampServer está devidamente instalado, e se está iniciado. Digite http://localhost/ no browser para ver a página padrão do WampServer;
  2. Verifique se o projeto Flex abre corretamente o endereço http://localhost/ZendTest/bin-debug quando executamos o projeto;
  3. se a biblioteca do Zend está na pasta bin-debug. Deve ter a pasta Zend lá;
  4. se o arquivo server.php está na pasta bin-debug;
  5. se o arquivo ZendTest.php está na pasta bin-debug;
  6. se o nome da classe do arquivo ZendTest.php é ZendTest. O nome do arquivo e da classe devem ser iguais;
  7. se existe o arquivo services-config na pasta src  do projeto;
  8. se o arquivo services-config.xml possui no atributo uri da tag endpoint o endereço: http://localhost/FlexZendTeste/bin-debug/server.php;
  9. no RemoteObject o atributo destination, que deve apontar para o destination do arquivo services-config.xm;
  10. se o atributo source do RemoteObject aponta para a classe ZendTest;

Com isso finalizamos este artigo. Estamos à disposição para a solicitação de mais artigos nesta área.

Código Fonte

1 comentário

 Patrícia Souza
15/09/2009 13h23

didática

Olá Daniel, que bom que você voltou a escrever. Muito interessante você integrar o zend framework com o flex, vai juntar duas das minhas ferramentas favoritas! Parabens!

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Daniel Schmitz trabalha com desenvolvimento web desde 1998 e atualmente dedica-se ao Flex sendo autor de livros e divulgando conteúdo em www.flex.etc.br

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.