quinta-feira, 29 de novembro de 2007

Trocando objetos Flex com PHP via AMFPHP 1.9

Olá Pessoal,

Uma vez eu procurei, e demorei para encontrar, como fere o coracão ver certas pessoas
trocando atributos entre o Flex e o PHP, acho legar mostrar como serializar e deserializar
objetos Flex (AS3) para PHP via AMFPHP

**Este pequeno tutorial, parte do princípio que você já conhece o AMFPHP e Flex
Você ainda não conhece? um link que mostra como fazer essa integracão:

http://www.sephiroth.it/tutorials/flashPHP/flex_remoteobject/

Bom então vamos lá....

Primeiramente, crie uma classe do tipo VO/DTO no PHP que será usado para a
serializacao e
deserializacão, sendo transportado entre as camadas.
No caso um exemplo bem simples, o VO CargoVO

CargoVO.php

<> CargoVO
{
var $idCargo
var $dsCargo;

//Local do VO Espelho no Flex.
var
$_explicitType = "CargoVO";
}

?>


Como você já tem seu VO no php, vamos criar um VO espelho no Flex:

CargoVO.as

package
view.vo
{

//Local do VO Espelho no PHP.
[RemoteClass(alias="CargoVO")]

[Bindable]
public
class CargoVO
{
public
var idCargo:int;
public var dsCargo:String;

public function CargoVO()
{
this
.idCargo = new Number();
this.dsCargo = new
String();
}
}
}

Feito isso, é só apenas trabalhar com instâncias desses VO's...

Por exemplo, na pasta de Services do AMFPHP, você cria um ServiceCargo e manipula métodos de

negócio, persistência, validacão e etc... Exemplo do ServiceCargo:

<
require_once '/vo/CargoVO.php';

class ServiceCargo
{
function salvar(CargoVO $p_cargo)
{
//Métodos de acesso ao negócio
return("Salvo com Sucesso!".$p_cargo->dsCargo);
}

function obterLista()
{
//Métodos de acesso ao negócio.
}


function excluir(CargoVO $p_cargo)
{
//Métodos de acesso ao negócio.
}

function atualizar(CargoVO $p_cargo)
{
//Métodos de acesso ao negócio.
}

}
?>


Bom.. como fuciona mais ou menos o processo, Por Exemplo:

Você vai salvar o um Objeto Cargo, no Flex vc chama seu RemoteObject e manda salvar passando
o objeto CategoriaVO populado, e no meio do caminho, o Framework, AMFPHP, irá serializar em um
Objeto CargoVO PHP, assim como na hora de devolver para o Flex, ser você solicitar uma lista de
Cargos, o retorno será um Array de CargoVO, debug e confirme, se não tiver tipado como CargoVO,
você fez algo errado!

Blza?


Obrigado Pessoal pela atencão...

Abracos!!
\o/

3 comentários:

Bruno disse...

Bom exemplo de uso do padrão. Mas o nome é TO (Transfer Object) e não mais VO. Consulte o Fowler para mais informações.

D!gOW's disse...

Olá
Eu tenho conhecimento desta mudança...

mais eu pessoalmente ainda uso o nome VO como padrão, outros preferem usar DTO (Data Transfer Object) ou então o TO, como você Bruno, apresentou...

É apenas uma visão pessoal, use como bem entender.

Obrigado.

Marcos Martinelli Paegle disse...

o AMFPHP foi descontinuado, agora tem q usar o ZEND_AMF.