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”.
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
<?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.
<?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
<?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
<?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
<?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.
Fonte: Jose Carlos Fiel