- 1
[Opened] accéder dynamiquent à un attribut d'objet....
Posted by Arnall on 06/19/2008 23:16
Bonjour,
y a des journées comme ça ...
j'ai passé beaucoup de temps pour quelque chose qui semble simple au départ.
J'ai créé une fonction avec 2 paramètres qui est censée me renvoyer les attributs d'un objet.
bref je passe $a et $b en paramètre et je veux récupérer $objet->$a[$b]
, si ce n'est que cela ne marche pas....
$objet->$a[$b]
n'est pas correctement interprété par PHP,
$temp='gJConfig->'.$a.'['.$b.']'; $val=${$temp};
ne marche pas non plus j'ai droit à : Undefined variable: gJConfig->le_site['images_path']
( avec $a='le_site' et $b='images_path' ) alors que si j'écris en dur $gJConfig->le_site['images_path'] la variable est bien interprété...
J'ai épuisé toutes les combinaisons de quote et autres accolades mais rien n'y fait il semblerait que je ne peux pas créer dynamiquement la variable dont j'ai besoin...
je craque...need help !!!
[Opened] Re: accéder dynamiquent à un attribut d'objet....
Posted by Arnall on 06/19/2008 23:32
Bon évidemment suffit de poster pour finir par trouver une solution...
Ceci étant ça me botte moyen donc si vous avez mieux...
$temp='gJConfig->'.$a.'['.$b.']'; eval("\$val=\${$temp};");
me donne bien la valeur que je voulais... Si vous avez pareil mais sans le eval() c'est bien aussi :)
[Opened] Re: accéder dynamiquent à un attribut d'objet....
Posted by laurentj on 06/20/2008 11:33
Franchement, ce eval, c'est un peu crad (et pas performant au passage). Quitte à utiliser une variable temporaire, autant faire un truc propre et simple à comprendre :
$temp = & $gJConfig->$a; $val = $temp[$b];
M'enfin il y a mieux quand même ;-)
$val = $gJConfig->{$a}[$b];
[Opened] Re: accéder dynamiquent à un attribut d'objet....
Posted by Arnall on 06/20/2008 19:53
Alors la évidemment je me dis, y croit quoi ? j'y ai passé une après midi... le coup de $val = $gJConfig->{$a}[$b];
je l'ai déjà testé et ça marche pas.
Je décide donc d'essayer à nouveau et évidemment j'ai droit à un message d'erreur...Espoir déçu... et puis je me concentre sur le message d'erreur :
Undefined index: 'images_path'
Je retourne dans le template et je regarde mon appel de plugin :
{jConfig_ini 'images_path'}
Je le transforme en (le deuxième paramètre est fixé par défaut):
{jConfig_ini images_path}
Et la...ça marche...
$val = $gJConfig->{$a}[$b]
ne marche que si on retire les quotes à la valeur de $b ... ma foi... un après midi pour ça c'est rude...
Au final merci !
[Opened] Re: accéder dynamiquent à un attribut d'objet....
Posted by Arnall on 06/21/2008 09:57
C'est ce que je me suis dit, c'est pour ça que j'ai insisté :)
- 1