AIR amfphp exemple de connexion avec wamp

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