Transfert d'object entre php et flash via amfphp

Signaler
Messages postés
56
Date d'inscription
mercredi 5 septembre 2007
Statut
Membre
Dernière intervention
22 juillet 2010
-
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
-
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

Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

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)
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

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)
Messages postés
56
Date d'inscription
mercredi 5 septembre 2007
Statut
Membre
Dernière intervention
22 juillet 2010

Merci pour votre réponse rapide, je connaissais cette technique mais j'aurais aimé faire du class mapping, genre  monObjet flash = monObject php
Messages postés
56
Date d'inscription
mercredi 5 septembre 2007
Statut
Membre
Dernière intervention
22 juillet 2010

actuellement je fais comme cela:

var myUser:User=new User();
  for ( var p in pRetour ) 
      
  {
     myUser[p]=pRetour[p];
     
        
  }
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
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.

@+
Messages postés
56
Date d'inscription
mercredi 5 septembre 2007
Statut
Membre
Dernière intervention
22 juillet 2010

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?
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

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)
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
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

@+