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
AMFPHP
http://www.amfphp.org/docs/otherplatforms.html
Labs Adobe(Macromedia)
http://labs.macromedia.com
Flexcoders
http://www.flexcoders.com
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.
na versao 1.9 as coisas ficaram bem mais simples
http://www.sephiroth.it/tutorials/flashPHP/flex_remoteobject/