Olá pessoal, estou de volta, não tive muito tempo esses últimos dias, mas prometo nos próximos dias honrar o meu sobrenome e ser fiel aos posts rsrs. Bom brincadeiras a parte, mas vamos o que interessa, que é continuar esta série de integrar o Flex com o Zend Framework usando um projeto já construído, neste caso estou usando o Quickstart da Zend.

Recomendo que você leia a parte 1 antes de continuar lendo este post.

Bom antes de dar continuidade e ir diretamente ao código, precisamos criar um novo projeto PHP no Eclipse, chamado ZendFrameworkQuickstart e apontar a pasta aonde está nosso Quickstart que baixamos anteriormente, no meu caso é “c:\wamp\apps\ZendFrameworkQuickstart”.
projeto_quickstart

Criado o projeto, temos que configurar finalmente nosso componente Zend AMF. Para isso criamos um novo controller chamado “GatewayController” e logo em seguida seu método chamado “amfAction” veja abaixo:

GatewayController.php

1
2
3
4
5
6
7
8
<?php
class GatewayController extends Zend_Controller_Action {
   
    public function amfAction(){
       
    }
   
}

Como podemos ver, o GatewayController é um controller comum como os outros, ele extende de Zend_Controller_Action e ele será o nosso Endpoint para comunicar com o Flex. Claro, ainda não acontecerá nada porque temos que instanciar nosso componente Zend AMF e faremos isso dentro da action “amf” que acabamos de criar. Para instanciar devemos primeiramente importar a classe Zend_Amf_Server e após instanciá-la. Aproveitando criei o método init() padrão do Zend Framework para importar a classe e também tirar a renderização do layout.

GatewayController.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
class GatewayController extends Zend_Controller_Action {
   
    public function init(){
        //remove a renderização do layout da página
        $this->getHelper('viewRenderer')->setNoRender();
        //carrega a classe
        Zend_Loader::loadClass('Zend_Amf_Server');
    }
   
    public function amfAction(){
        //criamos a instancia do componente Zend AMF
        $server = new Zend_Amf_Server();
    }
   
}

Agora deveremos indicar a pasta aonde ficará todas as nossas classes PHP que farão comunicação com o Flex, mas antes disso vamos criar esta pasta, eu sugiro criar dentro de application para padronizar a estrutura. Esta pasta poderá chamar-se “services”.
Criada a pasta voltamos ao GatewayController e usamos o método “addDirectory” do nosso componente Zend AMF e em seguida passamos o caminho completo da nossa pasta “services”. Veja:

GatewayController.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
class GatewayController extends Zend_Controller_Action {
   
    public function init(){
        //remove a renderização do layout da página
        $this->getHelper('viewRenderer')->setNoRender();
        //carrega a classe
        Zend_Loader::loadClass('Zend_Amf_Server');
    }
   
    public function amfAction(){
        //criamos a instancia do componente Zend AMF
        $server = new Zend_Amf_Server();
       
        $server->addDirectory(APPLICATION_PATH . '/services/');
    }
   
}

Percebem-se que coloquei a constante APPLICATION_PATH para indicar o caminho completo até a pasta “application”, isso já está configurado no nosso index.php (Arquivo front-controller do Quickstart). Então o método “addDirectory” mapeia toda a pasta “services” indicando que ali estão todas as classes que terão acesso ao Flex e vice versa.

Precisamos agora fazer o Zend AMF conectar com o Flex através do método “handle”, para isso devemos imprimi-lo na tela para que aja a manipulação dos dados AMF.

GatewayController.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
class GatewayController extends Zend_Controller_Action {
   
    public function init(){
        //remove a renderização do layout da página
        $this->getHelper('viewRenderer')->setNoRender();
        //carrega a classe
        Zend_Loader::loadClass('Zend_Amf_Server');
    }
   
    public function amfAction(){
        //criamos a instancia do componente Zend AMF
        $server = new Zend_Amf_Server();
       
        $server->addDirectory(APPLICATION_PATH . '/services/');
       
        echo($server->handle());
    }
   
}

Pronto, agora você pode testar em seu navegador, a url “http://localhost/guestbook/gateway/amf” e deverá obter uma solicitação de download de um arquivo “amf” do tipo AMF. Se editá-lo verá que está escrito Zend Amf Endpoint. Isso significa que está funcionando até então nossa comunicação entre Zend e Flex.

Vamos criar a nossa classe PHP que desejamos comunicar com o Flex.
Crie um novo arquivo PHP dentro da pasta “services” chamado de “HelloFlexService” e respectivamente o mesmo nome para a classe. Em seguida criamos um método chamado “helloFlex” e colocamos um simples return “Olá Flex, estou usando o Zend AMF!”.

HelloPhpService.php

1
2
3
4
5
6
7
8
<?php
class HelloFlexService {
   
    public function helloFlex(){
        return 'Olá Flex, estou usando o Zend AMF!';
    }
   
}

Feito! No próximo post estarei mostrando para vocês como chamar esta classe no Flex e exibir o seu conteúdo. Desta vez eu não demoro rsrs, aguardem…