2009-06-23 3 views
3

J'utilise ZendAMF pour la communication à distance.Mappage d'objets PHP et Flex

<?php 
    error_reporting(E_ALL | E_STRICT); //error reporting, not needed 

    require_once "Zend/Amf/Server.php"; //the zendAMF server 
    require_once "process.php"; //our test class 

    $server = new Zend_Amf_Server(); //declare the server 

    $server->setClass("process"); //load our test-class to the server 
    $server->setClassMap("Session", "Session"); 
    echo($server->handle()); // needed to start the server 
?> 

Ma question est j'ai une session de classe ActionScript et une session PHP classe, mais qu'il ne soit pas cartographié. J'ai quelques doutes ... peut-être stupide ...

Le nom de fichier de la classe PHP doit être le même nom que le nom de la classe, car ce n'est pas nécessaire mais lors du mappage il porte un score de valeur. Comment appellerez-vous ces objets mappés à l'intérieur de votre application Flex? Mon approche est indiquée ci-dessous, mais je ne sais pas si c'est correct ou non.

$ server-> setClassMap ("Session", "Session"); Ce qui est une classe PHP et Flex dans la fonction ci-dessus.

De plus, ma classe de session PHP se trouve dans le répertoire include, devrais-je l'indiquer ailleurs ou le ZendAMf s'en chargera-t-il?

Code Flex.

var userSession:Session = new Session(); 
sessionHold.text = userSession.userid; 

Merci.

+0

J'ai joué avec AMFPHP à mon travail de jour, et pas joué avec l'outil Zend AMF. Dans l'outil Zend, a-t-il quelque chose comme le "Service Browser" disponible avec AMFPHP? Cela a été mon meilleur pari en termes de services de dépannage. J'ai seulement travaillé du côté de PHP, pas du côté de Flash cependant. – artlung

+1

@artlung Le navigateur de service dans AMFPHP est une application Flash autonome que l'OP devrait être en mesure de récupérer facilement à partir du téléchargement AMFPHP et de l'utiliser comme outil de débogage. – dcousineau

+0

Charles Proxy m'a été d'une aide inestimable pour ce genre de travail. Si pour rien d'autre, c'est un bon contrôle de santé mentale. –

Répondre

4

Il y a plusieurs choses que vous devez faire. Habituellement, il est quelque chose comme l'ajout de la

[RemoteClass (alias = « session »)]

aux métadonnées de votre AS classe ou en utilisant l'une des fonctions de Zend_Amf comme getASClassName() dans votre objet PHP. Jetez un coup d'œil au mapping screencast de Wade Arnold (auteur de Zend_Amf). Je suis sûr qu'il aura votre réponse.

http://www.wadearnold.com/tutorials/zend/classmap/

0

TypeOneError est correct; vous aurez besoin de

[RemoteClass(alias="Session")] 
[Bindable] 

en haut de vos classes ActionScript.

Quelques autres choses que j'ai déterminé peut provoquer ce problème:

  • Les variables de classe doivent être publiques et ont des noms identiques
  • La classe ActionScript ne devrait pas avoir un constructeur défini
+0

Oh mon Dieu. Je n'ai jamais eu ce travail même si j'ai ajouté des Metatags à mes objets de valeur. J'ai vérifié avec Carles, que php envoie un objet de valeur strictement typé à flex mais le mapping ne fonctionne pas. –