CucaDigital.com.br

Tag: AS3

Integrando Flash + PHP via Zend AMF

by Claudney on jun.09, 2009, under AMF, Dicas, Flash, PHP, Programação, Web, Zend Framework

integrando-flash-php-via-zend-amf

Em primeiro lugar devemos baixar a versão mais estável do Zend Framework (ZF).
Pode ser baixada através deste link: http://www.zendframework.com/download/latest, neste exemplo que vamos demostrar foi utilizado a versão: ZendFramework-1.8.2-minimal.

Esse tutorial visa somente iniciar como fazer integração via AS3 e o PHP através do Zend AMF, com isso não iremos detalhar o funcionamento do Framework, mas e ai como vou criar minha aplicação, tenho que configurar o ZF certo?

Correto iremos utilizar a ferramenta que gera um esqueleto da aplicação do ZF sem a necessidade de configurarmos manualmente, mas vale a pena dar uma lida na documentação do framework que possui uma infinidade de recursos disponíveis pode conferir em: http://www.zendframework.com/docs/quickstart.

Concluído o download descompacte o arquivo em uma pasta de sua preferência e através do prompt de comando acesse a pasta bin e execute o seguinte comando:

 
# linux:
zf.sh create project amf
 
# Windows:
 zf.bat create project amf
 

Após a execução do comando acima ele vai gerar a seguinte estrutura de diretórios, que é a estrutura padrão para as aplicações do ZF.

amf
|-- application
| |-- Bootstrap.php
| |-- configs
| | `-- application.ini
| |-- controllers
| | |-- ErrorController.php
| | `-- IndexController.php
| |-- models
| `-- views
| |-- helpers
| `-- scripts
| |-- error
| | `-- error.phtml
| `-- index
| `-- index.phtml
|-- library
|-- public
| `-- index.php
`-- tests
|-- application
| `-- bootstrap.php
|-- library
| `-- bootstrap.php
`-- phpunit.xml

Após a criação desta estrutura copie a pasta Zend que se encontra dentro da pasta libray de onde você descompactou o arquivo do ZF, para a pasta library da sua aplicação, e em seguida mova a estrutura para a sua pasta htdocs do seu servidor web.

Após seguir os passos acima acesse o endereço: Exemplo: http://localhost/amf/public, deverá gera uma janela exemplo a mostrada abaixo:

amf1

Agora já podemos criar nosso servidor AMF para a integração com o Flash.

Agora temos 2 opções podemos criar um arquivo contendo um Objeto que vai conter todos os métodos que queremos que o Flash acesse, ou criar nossa biblioteca de funções. Eu prefiro a primeira opção mas vou dar exemplo das duas.

Vamos criar dentro da pasta library da nossa aplicação dois arquivos:

  • Classe.php - que vai representar nosso objeto
  • Funcoes.php - que será a nossa biblioteca de funções
  • Com os seguintes conteúdos:

     
    <?php
    #ARQUIVO Funcoes.php
    /*
     * BIBLIOTECA DE FUNÇÕES PARA INTEGRAÇÃO COM AMF
     * @author claudney
     */
     
    /**
     * REALIZA SOMA
     * @param integer $x
     * @param integer $y
     * @return integer total
     */
    function soma($x,$y){
        return (int) $x+$y;
    }
     
    /**
     * retorna quadrado de um numero qualquer
     * @param integer $num
     * @return integer total
     */
    function quadrado($num){
        return (int) $num*$num;
    }
    ?>
    ---------------------------------------------
    <?php
    #Arquivo Classe.php
    /*
     * OBJETO PARA INTEGRAÇÃO COM AMF VIA ZEND
     * @author claudney
     */
    class Classe {
     
        /**
         * REALIZA SOMA
         * @param integer $x
         * @param integer $y
         * @return integer total
         */
        public function soma($x,$y){
            return (int) $x+$y;
        }
     
        /**
         * retorna quadrado de um numero qualquer
         * @param integer $num
         * @return integer total
         */
        public function quadrado($num){
            return (int) $num*$num;
        }
     
    }
    ?>
     

    Em seguida abra o arquivo index controller e altere o método indexAction adicionando as seguintes linhas, para que fique como mostrado abaixo:

     
     public function indexAction()
    {
        require "Funcoes.php";
        require "Classe.php";
        $server = new Zend_Amf_Server();
        $server->setClass('Classe') //aqui adicionamos o nosso objeto no servidor
                ->addFunction('soma') //aqui adicionamos a funcao soma
                ->addFunction('quadrado'); //e por ultima a funcao quadrado
        $response = $server->handle();
        echo $response;
        exit;
    }
     

    Se executar o endereço: novamente sera solicitado para fazer donwload de um arquivo cuja o conteúdo será "Zend AMF endpoint", ou seja somente o Flash ou Flex poderá acessar seu conteúdo.

    Agora só nos resta o Flash, crie um filme com os seguintes elementos:

  • 4 - Input Texts
  • 4 - Textos Estaticos
  • 1 - Botao
  • A organize-os para que fique semelhante a imagem abaixo:

    amf2

    Nome os inputs como: funcao, param1, param2, retorno e botao, que utilizaremos em nosso Action Script.

    Apos criar todos os elementos vamos criar nosso Action Script 3:

     
     
    //Imports de bibliotecas
    import flash.display.MovieClip;
    import flash.events.*;
    import flash.net.NetConnection;
    import flash.net.Responder;
     
    botao.addEventListener(MouseEvent.CLICK, minhaFuncao);
     
    function minhaFuncao(e:MouseEvent):void{
     	var gateway:String = "http://127.0.0.1/amf/public/"; //ENDERECO DO SERVIDOR AMF
    	var connection:NetConnection;
    	var responder:Responder;
     
    	responder = new Responder(onResult, onFault); //RESPONDER COM FUNCOES DE CALLBACK
    	connection = new NetConnection; //CRIAMOS UMA NOVA CONEXAO
    	connection.connect(gateway); //APONTAMOS PARA O ENDERECO QUE FOI INFORMADO
     
    	//CRIAMOS A CHAMADA DINAMICA PARA OS METODOS DO PHP
    	connection.call(funcao.text, responder,param1.text,param2.text);
    }
     
    //ABAIXOA FUNCAO DE CALLBACK QUE É EXECUTADO NO
    //QUANDO O METODO RETORNA SUCESSO
    function onResult(result:Object):void {
          retorno.text = String(result);
    }
     
    //FUNÇÃO QUE RETORNA ERRO CASO OCORRA
    function onFault(fault:Object):void {
        retorno.text =(String(fault.description));
    }
     

    Agora podemos executar o nosso arquivo e chamar as funções e ver o resultado diretamento no flash, sem ter que gerar XML´s ou arquivos TXT´s para essa integração.

    Utilizando a chamada do metodo do Objeto:
    amf3
    Utilizando a chamada por função:
    amf4

    Se quiser chamar diretamente dentro do Flash basta utilizar o comando:

     
    connection.call('Objeto.metodo', responder,param1....paramN);
    //ou
    connection.call('funcao', responder,param1....paramN);
     
    1 Comment :, , , , , , , more...

    

    Esta procurando algo?

    Use o formulário abaixo para realizar a sua pesquisa:

    Assine nosso feed, e recebe tudas as novidades do nosso site diretamente no seu e-mail.

    Comentários