Retourner aux forums || Retourner au forum Programmation.php

Programmation.php : Accéder aux propriétés d'un objet à partir d'une chaine.

Posté par Slainer (Jabber id, page perso, ) le 13 avril 2006
0
Hello ! J'ai un magnifique objet $employe où je peux atteindre la valeur nom en via $employe->nom;. pour l'instant rien de miraculeux. comment faire si maintenant je récupère une chaine de caractères "nom" ou une autre propriété de l'objet ?

en gros j'ai :
$prop = "nom"; echo $employe->$prop;

mais ça marche pas bien sur. voili voilou. je sais jamais comment ce genre de techniques s'appelle c'est pour cela que je trouve jamais de réponse sur le net alors que ça doit etre tout con.


Miciii. Nicolas

> Lire le message (5 commentaires, moyenne: 0,8).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Hum

Posté par cho7 (page perso, ) le 13/04/2006 à 07:44. (lien). Évalué à 1.

J'suis pas un spécialiste de php, mais je pense que la solution c'est la fonction eval, qui interprete une string comme du code (gare aux failles de sécurité avec ca parcontre !) :

<?
class Personne{
var $nom;
}

$blou = new Personne();
$blou->nom = "pouet";


$prop = "nom";
$chaine = "\$resultat = \$blou->$prop;";
eval($chaine);
echo $resultat;

?>

Je crois pas qu'on puisse mettre le eval() directement dans un echo, donc j'suis passé par une variable temporaire "$resultat".

--
le python, c'est bon
  • [^]Re: Hum

    Posté par Slainer (Jabber id, page perso, ) le 13/04/2006 à 07:49. (lien). Évalué à 2.

    oula, je m'excuse ! faut que je me réveille en fait parce que $obj->$prop à l'air de fonctionner...

    je vais aller me faire un café :D.

    par contre j'ai un objet qui retourne un array depuis une fonction getArray et un $obj->getArray()[0] ne fonctionne pas. En passant par une variable temporaire pour stocker le tableau ça marche, mais directement je ne trouve pas...

    • [^]Re: Hum

      Posté par cho7 (page perso, ) le 13/04/2006 à 07:52. (lien). Évalué à 0.

      Effectivement :)

      Bon bah t'auras p't'être appris le fonctionnement de eval() ^^

      --
      le python, c'est bon
  • [^]Re: Hum

    Posté par cho7 (page perso, ) le 13/04/2006 à 07:50. (lien). Évalué à 0.

    Je crois pas qu'on puisse mettre le eval() directement dans un echo, donc j'suis passé par une variable temporaire "$resultat".

    Après m'être un peu documenté, je me corrige moi même en disant que si, c'est possible, avec l'instruction return.

    Ce qui nous donne donc (pour coller au plus juste avec ta question) :

    <?
    class Employe{
    var $nom;
    }

    $employe = new employe();
    $employe->nom = "cho7";

    $prop = "nom";

    echo eval("return \$employe->$prop;");


    ?>



    Enjoy.

    --
    le python, c'est bon
    • [^]Et en Python ?

      Posté par dood (page perso, ) le 13/04/2006 à 09:37. (lien). Évalué à 1.

      Bon je sais que ce n'est pas le bon forum, mais je profite de la question pour rebondir dessus.

      Je voudrais faire la même chose en Python, en particulier pour passer en revue tous les attributs et toutes les méthodes d'un widget...

      Guilhelm

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.php