IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Eval et Objet SimpleXmlElement [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Par défaut Eval et Objet SimpleXmlElement
    Bonjour à tous,

    Alors voilà je réceptionne depuis une url une réponse XML.

    Dans ma base de données, je dispose des paths pour accéder aux valeurs des éléments XML.

    Petit exemple, Ma réponse xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    <Personne>
       <taille>
          1.30
       </taille>
       <nom>
          1.30
       </nom>
    </personne>
    ma réponse est stocké dans un objet SimpleXmlElement.

    Dans ma base je récupère le path pour avoir la taille de la personne qui est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $path = "Personne->taille[0]"
    Maintenant pour récupérer ma valeur j'essaie de faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval("echo $xml->$path")
    Eval renvoi False : il n'a pas réussi à exécuter l'expression.

    Est-ce problème dans l'interprétation de la fonction eval ou est-ce simple qu'on ne peut pas manipuler un objet de la sorte (concaténation de path...)

    Je précise que si je fais directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $xml->Personne->taille[0]
    je récupère bien la valeur.

    Merci d'avance

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    affiche la chaine de caractères que tu passes à "eval" et tu verras le problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "echo $xml->$path";

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Il ne faut pas d'interpolation de la variable $xml justement, contrairement à $path, non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    eval("echo \$xml->$path;");
    #$val = eval("return (string) \$xml->$path;");

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Par défaut
    Merci nosferapti.

    Voici la solution pour ceux que ça intéresse :

    Il faut passer le paramètre "return" à la fonction eval pour que cette dernière renvoie la valeur de la commande.

    Il faut ajouté aussi le ";" à la fin de la commande et protéger le "$" par un antislash (pour les variables).

    Ce qui donne pour une seule entrée provenant de ma db:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    $sql = "SELECT path FROM ma_table";
    $ret = $db->query($sql);
     
    eval("return \$xml->".$ret[0]["path"].";")
    [EDIT] : merci julp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utilisation d'eval pour accéder à un objet?
    Par Setsuna_00 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 26/07/2011, 14h36
  2. [SimpleXML] Convertir SimpleXMLElement en un objet
    Par kawe22 dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 19/10/2010, 14h55
  3. [POO] Objet SimpleXMLElement vers string ?
    Par jeremm dans le forum Langage
    Réponses: 4
    Dernier message: 20/05/2009, 16h15
  4. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo