Flex 2.0 e AMFPHP!!!

Até o Flex 1.5, podia-se usar o AMFPHP normalmente, simplesmente apontando o endereço do gateway através da tag RemoteObject como no exemplo a seguir:

[xml]< ! -- endpoint is the location of the gateway file. source is the name of the service (can be fully qualified like com.mydomain.MyService). AMFPHP does not support named arguments but you can simply write them as arg1, arg2, etc. -->
< mx :RemoteObject endpoint="http://www.mydomain.com/amfphp/gateway.php" id="service" source="MyService" protocol="http" showBusyCursor="true">
< mx :method name="doSomething">
< mx :arguments>
< arg1>{txtName.text}< / arg1>
< / mx:arguments>
< / mx:method>
< / mx:RemoteObject>[/xml]

No Flex 2.0 foi introduzido um novo protocolo AMF, o AMF3, com melhorias de peformance e rendimento. No entanto, para se usar o RemoteObject será necessario ter o Flex Interprise Services no servidor, ou seja ficamos novamente limitados ao requisitos do servidor para o desenvolvimento.

Entretando como sempre foi politica da macromedia, o Flex 2.0 ainda será compativel com o AMF0. Agora temos a opção de escolher entre os dois protocolos. Ficando entre AMF0 e o AMF3.
Isso rendeu discurssões bem interessantes na lista do flexcoders
Para determinar qual protocolo será usado basta configurar o objectEncoding.Por exemplo:

[as]//usando o AMF0
objectEncoding = ObjectEncoding.AMF0;
//usando o AMF3
objectEncoding = ObjectEncoding.AMF3;[/as]

Como resultado dessas discurssões, chegou-se ao seguinte codigo.
Esse codigo foi baseado no post do Jesse Warden

Criando uma classes extendendo a classe NetConnection

[as]package {
import flash.net.NetConnection;
import flash.net.ObjectEncoding;

public class RemotingConnection extends NetConnection {
public function RemotingConnection(sURL:String){
objectEncoding = ObjectEncoding.AMF0;
if(sURL){
connect(sURL);
}
}
public function AppendToGatewayUrl(s:String):void{

}

}
}[/as]

Tendo isto, usaremos outra classe para usar o AMF0 e conectar ao AMFPHP
[as]
package {
import flash.display.Sprite;
// import the internal classes
import flash.net.Responder;
import flash.net.NetConnection;
import flash.net.ObjectEncoding;
// import your custom class
import RemotingConnection;
import flash.util.trace;
import flash.display.MovieClip;
import flash.display.Stage;
import flash.display.StageAlign;
import flash.display.StageScaleMode;

public class remoting extends Sprite{
public var gateway_conn:NetConnection2;
public var gatewayURL:String = “http://127.0.0.1/flashservices/gateway.php”;
// setup your jazz
public function remoting(){
this.gateway_conn = new RemotingConnection();
this.gateway_conn.objectEncoding = ObjectEncoding.AMF0;
this.gateway_conn.connect(gatewayURL);
// make a method call on a PHP class
var r:Responder = new Responder(onPingResult, onPingStatus);
this.gateway_conn.call(“teste2.ola”, r);
}
// call back functions
public function onPingResult(event:Object):Void{
// success!
//trace(event.result);
trace(“onPingResult()”);
var s:Stage = new Stage();
s.scaleMode = StageScaleMode.NO_SCALE;
s.align = StageAlign.TOP_LEFT;
var t:TextField = new TextField();
t.width = 500;
t.text = “FLASH REMOTING!!! eu sou “+event;
addChild(t);
trace(“FLASH REMOTING!!! eu sou ” +event);
}
public function onPingStatus():Void{
//Status;
}
}
} [/as]

A nossa classe em PHP para teste.

[php]< ?php //flie teste2.php class teste2{ function teste2(){ $this->methodTable = array(
“ola” => array(
“description” => “testando o AMFPHP com Flex 2.0”,
“access” => “remote” // available values are private, public, remote
)
);
}

function ola(){
return “FLEX 2.0 COM AMFPHP!!!”;
}
}
?>[/php]

Agora podemos brincar bastante com o Flex 2 e AMFPHP

Veja um exemplo funcionando.

AMFPHP
http://www.amfphp.org/docs/otherplatforms.html

Labs Adobe(Macromedia)
http://labs.macromedia.com

Flexcoders
http://www.flexcoders.com

Necessário Flash Player 8.5

2 thoughts on “Flex 2.0 e AMFPHP!!!

  1. Lucas Marçal

    Leonardo Boa noite.

    Por favor entre em contato comigo pelo MSN, preciso falar com você sobre alguns projetos que tenho para desenvolvimento de Rich internet Applications.

    Atenciosamente
    Lucas Marçal
    Colunista MXSTUDIO
    PS: não te mandei e-mail pois não achei link em seu site.

Leave a Reply