Puisque nous avons vu comment utiliser amfphp sur flex avec wamp, maintenant nous allons le faire sur AIR.
Conditions de travail:
- On suppose que vous avez un serveur php d'installé (wamp dans cet example) en local.
- Flex Builder 3
- Un éditeur php (genre notepad++)
1 - Créer un nouveau projet flex que l'on nommera
testAmfphp, avec output folder par défaut (bin-debug)
L'emplacement de ce projet doit être dans le dossier localhost de votre serveur (par defaut ( C:\wamp\www, donc C:\wamp\www\testAmfphp)
2- Télécharger amfphp 1.9 beta 2.
http://www.5etdemi.com/uploads/amfphp-1.9.beta.20070513.zip
Décomprésser et mettre le dossier dans le projet (src/amfphp)
3- Créer un fichier src/amfphp/services/
Bonjour.php avec le code suivant dedans:
<?php
class Bonjour{
private $message;
public function __construct(){
$this->message='Bonjour toi, youpiii ça marche!!';
}
public function disBonjour(){
return $this->message;
}
}
?>
4- Créer un fichier src/config.xml avec le code suivant dedans:
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service id="amfphp-flashremoting-service" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="amfphp">
<channels>
<channel ref="my-amfphp"/>
</channels>
<properties>
<source>*</source>
</properties>
</destination>
</service>
</services>
<channels>
<channel-definition id="my-amfphp" class="mx.messaging.channels.AMFChannel" >
<endpoint uri="http://localhost/testAmfphp/bin-debug/amfphp/gateway.php" class="flex.messaging.endpoints.AMFEndpoint" />
</channel-definition>
</channels>
</services-config>
5- Aller dans la configuration du compilateur:
Clic droit sur le projet => properties => Flex compiler => champ Additional compiler arguments:
Remplacer le code par:
-locale en_US -services "config.xml"
6- Mettre le code suivant dans le fichier
testAmfphp.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="init()">
<mx:Script source="dean.as" />
<mx:Button label="Test du service" click="appelFonction()"/>
<mx:TextArea y="30" id="zoneTexte"/>
</mx:WindowedApplication>
7- Mettre le code suivant dans le fichier
dean.as
import flash.events.MouseEvent;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.mxml.RemoteObject;
public var services:RemoteObject;
public function init():void{
services = new RemoteObject('amfphp');
services.source='Bonjour';
services.addEventListener(FaultEvent.FAULT,retourProblemes);
services.addEventListener(ResultEvent.RESULT,retourPhp);
}
public function appelFonction(e:MouseEvent=null) :void{
services.getOperation('disBonjour').send();
}
private function retourPhp(evt:ResultEvent) :void{
zoneTexte.text = evt.result.toString();
}
private function retourProblemes(fault:FaultEvent):void{
Alert.show(fault.fault.faultString, fault.fault.faultCode.toString());
}
Voilà une capture de l'arborescence que ça doit donner:

Compilez (Ctrl F11) et testez