Desenvolvimento - ActionScript

Actionscript AS3 + AMFPHP

Introdução à integração do flash com amfphp, facilitando a comunicação de suas aplicações com mysql e php.

por Rafael Costa



Introdução à integração do flash com amfphp, facilitando a comunicação de suas aplicações com mysql e php.

Após alguns meses, estou de volta com um tutorial que espero ser muito útil para todos. Vou falar sobre a integração do AMFPHP com o Flash, mais especificamente, AS3, embora ele funcione também com AS2.

Para quem ainda não conhece, o AMFPHP serve para fazer conexões entre o Flash e o PHP, enviando objetos por meio de SOAP, evitando o uso pesado de XML, como muitos programadores fazem.

Um exemplo clássico do uso, é quando você precisa pegar, por exemplo, a lista de usuários cadastrados no banco de dados e popular um combobox no Flash. Você tem um PHP, que acessa o MySQL, que retorna os resultados. Com esses resultados você gera o XML, que o Flash carrega e só depois monta essas informações.

Com AMFPHP, assim que tiver a resposta do banco ele já envia pro Flash e você recebe no seu "ouvinte".

Vamos ao que interessa.

Para começar este pequeno projeto, você precisa fazer o download do AMFPHP, que pode ser encontrado aqui:http://www.amfphp.org/. Após efetuar o download, descompacte os arquivos e coloque-os em uma pasta do seu servidor. No tutorial, vou usar o link do meu servidor local como $_SERVER_$

Acesse a página do projeto. Você deverá ver estas pastas e arquivos:

 


A pasta "browser" será acessada quando você quiser testar seus "serviços", que são suas classes no PHP. Dentro de "services" ficam suas classes PHP.

Entre em$_SERVER_$/amfphp/browser Deverá abrir um flash com os services atuais.

 

Ótimo. Sinal de que tudo está instalado e funcionando corretamente. Vamos criar uma class no PHP para teste, que vai servir para verificar se a string passada pelo Flash é igual a setada no PHP.

<?php
class Tutorial
{
var $sNome = "Rafael";
function verificar($sNomeFlash)
{
return $sNomeFlash == $this->sNome;
}
}
?>

Para facilitar a visualização, o código encontra-se aqui também:http://www.pastie.org/846097

Esta class contém o método verificarque apenas verifica se a string passada a ele é igual a declarada no início da class.

Feito isso, salve esta class com o nome Tutorial.php dentro na pasta services.

Se você acessar$_SERVER_$/amfphp/browser verá a class "funcionando".

 


Agora vamos ao Flash. Nosso projeto será feito no Flex. Se você ainda não usa, por algum motivo, comece a usar agora mesmo, por favor.

Crie um novo projeto no Flex com o nome Tutorial. O Flex se encarregará de criar as pastas, package, etc.

Vamos criar os métodos e variáveis para conexão com o AMFPHP e para receber os dados e colocá-los no construtor.

variável _nc que instanciará o NetConnection

metódo _createConnection() responsável por criar a conexão

método _createResponder() responsável por tratar a resposta do amfphp

método _callMethod() responsável por chamar o método do PHP e indicar o ouvinte e as variáveis

Além destes métodos, precisaremos de mais dois. O método _onResult que será chamado ao receber o resultado do PHP e o_onFault que será chamado se algo sair errado.

Dentro do _createConnection, vamos conectar o Flash do gateway do amfphp (que deverá estar na pasta do projeto)

 



Abaixo o código e o link para o pastie

package
{
import flash.display.Sprite;
import flash.net.NetConnection;
import flash.net.Responder;
public class Tutorial extends Sprite
{
private var _nc:NetConnection;
private var _oResponder:Responder;
public function Tutorial()
{
_createConnection();
_createResponder();
_callMethod();
}
private function _createConnection():void
{
_nc = new NetConnection();
_nc.connect("http://localhost/jobs/amfphp/gateway.php");
}
private function _createResponder():void
{
_oResponder = new Responder(_onResult, _onFault);
}
private function _onResult(oResult:Object):void
{
trace(oResult);
}
private function _onFault(oResult:Object):void
{
for(var i:String in oResult)
{
trace(oResult[i]);
}
}
private function _callMethod():void
{
_nc.call("Tutorial.verificar", _oResponder, "Rafael");
}
}
}

Pastie:http://www.pastie.org/846125

O método que merece um pouco de explicação é o callMethod. Perceba que ele só é chamado após criar o netConnection. Com isso eu consigo chamar o método call() da class NetConnection, passando a Class e o método da class PHP, separados por pontos, o objeto que receberá a resposta e os parâmetros, neste caso apenas a string "Rafael".

Dubugando este projeto, você poderá ver que o trace será true, pois o nome passado para o PHP é o mesmo declarado na class.

Este foi um exemplo bem simples do uso do amfphp, que abrange um leque muito grande para integração com PHP. Chega de Flash -> PHP -> MySQL -> PHP -> XML -> FLASH. Essa caminho é muito grande :)

Espero que tenham gostado e aprendido.

Estou a disposição para esclarecimento de dúvidas.

Abraços

Rafael Costa

Rafael Costa - Programador Actionscript há 2 anos. Participante do fórum FlashMasters, maior comunidade Flash do Brasil.
Além de Actionscript, possui conhecimentos em outras linguagens como: JavaScript, CSS, XHTML, PHP e MySQL.
Para saber mais sobre o autor, visite seu site:
http://www.rafaelcosta.com.