Integrando Flex com PHP utilizando o Zend Framework
Autor: Marcos Paulo Marques Corrêa
Categorias: Adobe Flex, Desenvolvimento de Software, PHP, Rich Internet Applications, Zend Framework
Tags: Adobe Flex, Flash, PHP
Postado em 22/11/2008 11:08:22
2
Como noticiei há alguns dias atrás, o Zend Framework agora possui um componente para comunicação com o Flash e Flex através do protocolo AMF, o Zend_Amf.
Agora os programadores PHP não necessitam mais utilizar a biblioteca AMFPHP.
Vou assumir que já temos um projeto PHP funcionando corretamente e utilizando o Zend Framework, se você ainda não utilizou, veja um bom ponto de partida. Não vou entrar em detalhes do Zend Framework agora, pois este não é o intuito deste post.
Para integrar o Zend Framework com o Flex é necessária apenas uma pequena mudança no código PHP, o código escrito em Flex poderá continuar o mesmo.
Na Action do Controller que será utilizado como EndPoint da requisição feita pelo Flex, basta seguir como no código abaixo:
// caminho onde se encontra as classes de Serviço
$servicesPath = realpath(dirname(__FILE__) .'/../../library/SoftEti/WebServices/');
// instancia do Servidor Amf para receber as requisições
$server = new Zend_Amf_Server();
// adiciona um diretório de serviços
$server->addDirectory($servicesPath);
// mapeia as classes ValueObjects ActionScript -> PHP
$server->setClassMap("UsuarioVO", "UsuarioVO");
$server->setClassMap("EmpresaVO", "EmpresaVO");
// adiciona um mapeamento para uma classe ArrayCollection caso utilize-a
$server->setClassMap("flex.messaging.io.ArrayCollection", "SoftEti_ArrayCollection");
// processa as requisicoes
$response = $server->handle();
// retorna o resultado
echo $response;
Classe PHP utilizada para mapear um ArrayCollection:
class SoftEti_ArrayCollection
{
public $_explicitType = "flex.messaging.io.ArrayCollection";
public $source = array();
function __construct($source = array())
{
$this->source = $source;
}
}
Obviamente você precisará fazer algumas modificações no código como caminhos, namespaces e nomes de classes, mas basicamente é isso, sem mistério, sem segredos, de forma simples e prática.
Agora a integração do Flex com o PHP ficou de forma bem mais elegante e harmoniosa, sem a necessidade de uma biblioteca externa.
Para maiores informações da utilização do Zend_Amf, sugiro visitar: http://framework.zend.com/manual/en/zend.amf.html.
Um abraço,
Até a próxima.


Essa sua classe para mapear um ArrayCollection, serve para mapear no PHP um ArrayCollection do Flex?
Poderia me dar mais informações de como fazer isso?
Vlw.
Não entrei em detalhes pois não era o foco do post.
Mas é exatamente isso Leonardo.
A classe que eu nomeei SoftEti_ArrayCollection é o mapeamento da classe ArrayCollection do Flex.
Apesar de nao ter implementado todas as funcionalidades na classe em PHP que contém na classe em Flex, quando voce setar os valores que quiser no array $source da classe SoftEti_ArrayCollection e retornar esta classe do seu webservice para o Flex, você irá receber um objeto do tipo ArrayCollection.
Se você debugar vai ver perfeitamente o funcionamento.
Abraços.