Coté serveur

La structure des fichiers d'amfphp est composée des dossiers suivants :

  • core : tout ce qui est du moteur.
  • browser : pour accéder aux services en ligne.
  • services : la où les services sont stockés (un dossier 'vo' doit être créé pour les classes).

Pour commencer, voici la structure de la classe Person (avec le chemin amfphp/services/vo/Person.php) :

<?
class Person
{
	public $name;
	public $adress;
	public $id;
}
?>

Il suffit ensuite de créer un service Sample pouvant envoyer et reçevoir des objets Person (amfphp/services/Sample.php) :

<?
include_once("vo/Person.php");
 
class Sample
{
	public function modifyPerson($pValeur)
	{
		$pValeur->name .= " [Modified by service]";
		return $pValeur;
	}
}
?>

Pour terminer, il ne reste plus qu'à envoyer tout ce que contient le dossier amfphp en ligne. Une fois fait, le service Sample.modifyPerson est disponible pour le client flash.

Coté client

Pour commencer, il faut créer une classe mapping qui corresponde à la classe Person en php :

package
{
	public class Person
	{
		public var name:String;
		public var adress:String;
		public var id:int;
	}
}

Maintenant, afin que flash puisse envoyer/reçevoir correctement des instances de la classe Person, un mapping d'alias doit être créé :

[actionscript]
registerClassAlias("Person", Person) ;

Il ne reste plus qu'à se connecter avec le serveur php. Cela se fait grâce à la classe flash.net.NetConnection :

var ncs:NetConnection = new NetConnection();
ncs.connect("http://www.astorm.ch/test/remoting/gateway.php");

Et il est ensuite très simple de faire appel au service Sample.modifyPerson :

registerClassAlias("Person", Person) ;
 
var p:Person = new Person();
p.name = "Test";
p.adress = "TestAdress";
p.id = 52;
 
function onResult(param:Person):void
{
	trace("Received : "+param);
}
 
var ncs:NetConnection = new NetConnection();
ncs.connect("http://www.astorm.ch/test/remoting/gateway.php");
ncs.call( "Sample.modifyPerson", new Responder(onResult), p);

Ce qui affiche au final un "Object Person" avec les bonnes propriétés récupérées depuis PHP !