quinta-feira, 13 de novembro de 2008

Mapeamento Objetos Flex - PHP, PHP - Flex no Amfphp

Olá a todos!

Bom esta semana como assunto para o meu segundo tutorial pensei em criar um projeto que faça conexão com banco de dados, já que na semana passada fizemos a integração entre flex e php, mas comecei desenvolver um projeto na empresa em que trabalho e necessitei fazer o mapeamento das minhas classes php para o flex, ou melhor, mapear meus "Values Objects". E na minha busca por material sobre o assunto percebi que ainda tem poucos exemplos de como se fazer isto. Então mãos a obra!

1º. Passo: Vamos criar nosso diretório que irá armazenar os valuesObjects (vo) .php. Por default o amfphp traz como diretório para os valuesObjects o diretório "services/vo/" como poderemos confirmar no arquivo globals.php dentro do diretório raiz do amf. Então vamos respeitar a regra e criar nosso objetos lá dentro:
Crie uma hierarquia de diretórios dento da pasta services do amfphp, semelhante a estrutura de projetos em flex, ou seja, DNS reverso que no caso do nosso exemplo ficará da seguinte forma:
...amfphp\services\vo\br\com\mapFlexPhp\valuesObjects



2º. Passo: Crie dentro da pasta valuesObjects um arquivo chamado: usuario.php com a seguinte estrutura:



Obs.: O método criado pode ser testado no browser do amfphp, caso não saiba como testar pode dar uma olhada no tutorial que explica como configurar flex, amfphp e php: Configurando Flex + Amfphp + PHP

3º. Passo: Crie um projeto no Flex chamado mapFlexPhp para testarmos o mapeamento: File -> New -> Flex Project.




4º. Passo: Crie uma estrutura de classes semelhante a que criamos para o objeto .php dentro da pasta src do projeto que criamos: ...\src\br\com\mapFlexPhp\valuesObjects


5º. Passo: Crie um arquivo Action Script Class dentro da pasta que criamos, chamado usuario.as com a seguinte estrutura:

Obs.: Este arquivo é um “espelho” da classe que criamos em php.

6º. Passo: Vamos agora criar um formulário no Flex que irá receber os usuários gerados através do nosso método PHP. No arquivo .mxml principal do nosso projeto vamos desenhar um layout para receber os dados semelhante ao da imagem abaixo, que contem um botão e um dataGrid:


Complete os códigos do nosso arquivo .mxml para ficar semelhante ao que esta apresentado na próxima imagem:


7º. Passo: Compile o projeto e clique no botão Buscar Usuários... pronto, você retornou para o dataGrig objetos do tipo usuário.
Arquivos do projeto para download: mapFlexPHP.rar

Você agora provavelmente deve estar se perguntando para que todo este trabalho, não é? Bom com este tipo de mapeamento você tem um controle muito maior dos objetos em sua aplicação, porque você estará trabalhando com objetos de tipos especificos com atributos e tipos corretos, e não mais com objetos genéricos. E sem contar o quanto facilita nas transações CRUD (Create, Retrieve, Update and Delete) com o banco de dados, entre outras vantagens. Vale a pena dar uma olhada em algum material referente a RPC (Remote Procedure Call - Chamada de Procedimento Remoto).

Tentei fazer um projeto o mais simples possível, mas este é um assunto bastante complexo então as vezes pode parecer um "bixo de 7 cabeças", mas digo a você que não é!
Um grande abraço e até a próxima!!!

Leia Mais

sexta-feira, 7 de novembro de 2008

Configurando Adobe Flex Builder + AMFPHP + PHP

Olá pessoal, meu nome é Dheyson Wildny sou Analista de Sistemas e trabalho com desenvolvimento há 4 anos, atualmente com as linguagens PHP5 OO / Ajax / CSS e cuido de um portal na área da saúde www.indiq.com.br.


Acordei hoje (07/11/2008) e percebi que já estava passando da hora de compartilhar o que aprendi nestes anos com quem está começando a desenvolver, daí pensei, vou falar sobre o quê? Com tantos sites que falam sobre o assunto na net, mas acho que ajuda nunca é demais, e então cheguei a seguinte conclusão: Flex tem sido umas das mais promissoras ferramentas para web dos últimos anos, e porque então, não comecei estudar isto até hoje? Não obtive resposta, mas não adianta chorar o tempo perdido, então, mãos a obra!


Na semana passada tive o primeiro contato direto com a ferramenta e vou dizer que não parece ser nenhum “bixo de sete cabeças” não.


Hoje vou começar explicando passo-a-passo como configurar o Flex Builder 3, com o remoting Amfphp 1.9 e o back-end em PHP 5 OO.


Vamos lá:

1º. Passo: Baixar e instalar o Flex Builder 3.0 no site da Adobe, existe uma versão trial free por 60 dias ou se preferir pode baixar o pluging do flex para o eclipse, que é a mesma coisa e totalmente free (para instalar o Flex
Builder... next, next, next, finish. rsrs...).
link trial free:
http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3email



2º. Passo: Baixar o Amfphp 1.9 (.zip).
http://sourceforge.net/project/showfiles.php?group_id=72483&package_id=72363&release_id=541961



3º. Passo: Baixar o PHP 5 e configurá-lo (não entrarei muito em detalhes de como fazer isto, mas vou deixar
aqui o link de um ótimo artigo de como configurar: Apache + PHP 5 + MySQL, qualquer dúvida podem entrar em contato comigo por e-mail).

http://www.plugmasters.com.br/sys/materias/243/1/Instalando-Apache-%2B-MySQL-%2B-PHP-5-no-Windows


4º. Passo: Descompacte o arquivo Amfphp 1.9.zip para uma pasta chamada amfphp dentro do htdocs do apache (diretório onde ficam os arquvios .php) como na figura abaixo:


Para finalizar a instalação do amfphp digite na janela do seu navegador: http://localhost/amfphp/browser,
deverá aparecer a seguinte janela configuração:


Marque as opções como na imagem acima e clique em Save. Pronto o Amfphp está “instalado”, dificil não é??


5º. Passo: Para facilitar minha vida e evitar que eu fique com arquivos duplicados no meu pc, eu costumo definir meu
diretório de “workspace” para o mesmo diretório onde os arquivos são compilados, mas isso vai de cada um.

Abra o Flex Builder vá em File ->Switch Workspace -> Other... no campo workspace coloque o caminho da pasta browser localizada dentro da pasta amfphp que acabamos de descompactar, no meu caso: C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\amfphp\browser

Prontinho, tudo configurado e funcionando!


Vamos agora criar um projeto simples para mostrar um “Hello world” vindo do PHP para o Flex!

Vá em File -> New -> Flex Project



Dê o nome de FlexHelloWorld e deixe as configurações como acima, no seu caso provavelmente a opção “Use default location” estará selecionada, deixe-a como estiver, depois clique em next.



Clique em Browse..., encontre a pasta browser dentro de amfphp e crie uma nova pasa com o mesmo nome do projeto: FlexHelloWorld

No Root URL deverá constar o caminho de acesso no browser do seu projeto, no nosso caso o camingo acima, após isto clique em Validade Configuration depois em Finish

Agora copie um arquivo chamado services-config.xml que se encontra dentro da pasta browser do amf para a pasta raiz do projeto criado. Depois que copiar abra o arquivo e no caminho da uri, coloque: http://localhost/amfphp/gateway.php, como na imagem.



Feito isto clique com o botão direito sobre o projeto criado e selecione a opção properties, como na imagem:



Na janela que abrir selecione: Flex Compiler e na caixa Additional compiler arguments adicione -services "../services-config.xml" e ok, como mostra a figura abaixo.



Pronto o Flex Builder está pronto para receber informações, vamos agora criar nossa classe .php

Crie um arquivo chamado Hello.php e salve dentro da pasta services do amfphp (é lá que são armazenados os arquivos de back-end). Deixe o código deste arquivo da seguinte forma:

<?php
class Hello {
public function HelloWorld() {
return "Hello World!";
}
}
?>

Ok! Agora vamos testar nosso método para ver se realmente esta funcionando, digite http://localhost/amfphp/browser no seu navegador. Deverá aparecer desta forma, quando selecionar Hello e clicar em Call:



Pronto agora só falta chamar o método no Flex. Digite nas linhas de comando do arquivo FlexHelloWorld.mxml como na imagem abaixo:



Agora é só pressionar Ctrl+F11 (compilar) e ver o resultado!

Bom espero ter sido bem claro e ter ajudado com este meu primeiro tutorial, qualquer dúvida me coloco a disposição!


Abraço e até a próxima!!!

Leia Mais