Transfert d'object entre php et flash via amfphp

szambaux Messages postés 56 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 22 juillet 2010 - 21 avril 2009 à 10:26
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 - 21 avril 2009 à 19:54
Bonjour, j'utilise amfphp pour mes communication entre flash et php, j'aimerais optimiser un peu. J'ai une classe User en php,
class User
{ 

    public $Id;
    public $nom;
    public $prenom;
    public $option;
    public $groupe;
    public $email;
    public $photo;
    public $telephone;
    public $gsm;
    public $contact;
    public $etat;
    private $mysql;
    public function User()
    {
    
    }
    
     public function __set($property,$value) 
    {
        
    }
    public function toString()
    {
        return "[User->Id=".$this->Id." nom=".$this->nom." prenom=".$this->prenom." option=".$this->option." email=".$this->email." photo=".$this->photo." contact=".$this->contact." etat=".$this->etat."]";
    }
}


 quand je me log je me créer un User en php en variable de session et je le transfert à flash

$mySession->myUser=$myUser;
 return $myUser;


dans mon flash j'ai une classe user


// nouvelle définition de ma classe User:
package vnd.utilisateur {

import vnd.web.utilisateur.ListeContact;
import vnd.utilisateur.Contact;
import flash.events.*;
import flash.net.*
import flash.display.*
// definition de ma classe User    
    public class User 
    {
        public var nom:String;
        public var prenom:String;
        public var groupe:int;
        public var email:String;
        public var photo:String;
        public var Id:int;
        public var contact:Array;
        public var etat:String;
        public function User() 
        {
            etat="horsLigne";
        }    
                
        //affiche la liste de cotnact
        public function afficheContact() 
        {
            
        }
                
        //fonction qui affiche le nom de la personne dans la zone de texte
        public function afficheNom()
        {
            //nom_txt.text=prenom+" "+nom;
        }
        
        //fonction utilisée pour le trace
        public function toString ( ):String 
        { 
            return "[Utilisateur prenom : " + prenom +", nom : " + nom + ", groupe : " + groupe + ", email : " + email + ", photo : " + photo +", etat : "+etat+" ]"; 
        }
    }
}



Quand je récupere mes infos via une connexion amfphp avec le code suivant:

function succes ( pRetour:* ):void  
{ 
  for ( var p in pRetour )  
       
  { 
         
    trace( p, " : " + pRetour[p] ); 
         
  } 

   
} 


J'obtiens ceci:



prenom : dupont

etat : null

contact : null

Id : 1

nom : toto

gsm : 06842245224

option : null

telephone : 0325656468

photo : null

email : toto@.fr

groupe : null

et j'aimerais que cela m'instancie directement un user via ma classe user en as3

8 réponses

Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
21 avril 2009 à 10:44
Hello,

tout d'abord, il faudrait deja passer des parametre a ton constructeur de ta classe as3, exemple :

public function User(pNom,pPrenom....)  //etc...
        {
           nom = pNom;
           prenom = pPrenom;
            etat="horsLigne";
        }  

Ensuite,

function succes ( pRetour:* ):void 
{   
    var newUser:User = new User( pRetour[0],pRetour[1];
}

Un truc dans ce genre je penses.. mais j'ai pas testé.

-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
21 avril 2009 à 10:44
Correction :

var newUser:User = new User( pRetour[0],pRetour[1]);

-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
szambaux Messages postés 56 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 22 juillet 2010
21 avril 2009 à 10:52
Merci pour votre réponse rapide, je connaissais cette technique mais j'aurais aimé faire du class mapping, genre  monObjet flash = monObject php
0
szambaux Messages postés 56 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 22 juillet 2010
21 avril 2009 à 10:56
actuellement je fais comme cela:

var myUser:User=new User();
  for ( var p in pRetour ) 
      
  {
     myUser[p]=pRetour[p];
     
        
  }
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
21 avril 2009 à 16:52
Bonjour,

ta solution fonctionne... mais n'est pas très sécurisante (tout est en variable public dans ta class User)la solution de Orange73 me semble une meilleure approche (var newUser:User new User( pRetour[0],pRetour[1]);) -> voir transmettte en une fois les données var newUser:User new User( pRetour)
au constructeur de User les infos nécessaires et les traiter dans la fonction constructeur est plus sécurisant.

Maintenant, si l'ordre et le nombre des données reçues de amfphp risque de changer, tu as pris la solution la plus optimale.

@+
0
szambaux Messages postés 56 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 22 juillet 2010
21 avril 2009 à 17:20
Merci pour votre éclaircissement, pour faire un compromis entre les deux méthodes, je pourrais passer mes variable en private et faire des fonction set pour mes variables,non?
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
21 avril 2009 à 17:27
Tu peux aussi, mais cela revient a ma méthode... en un peu plus de code...

Autant passer toutes les infos en prametres lors de l'instanciation de la classe

-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
21 avril 2009 à 19:54
ben wi...
sauf si, comme je le disais "l'ordre et le nombre des données reçues de amfphp risque de changer" alors l'idée des getter/setter sera un bon compromis

@+
0
Rejoignez-nous