Page 1 sur 1
Le nom d'une variable
Posté : 28 déc. 2009, 20:01
par Myk
Bonjour,
Peut-on récupérer le nom d'une variable en PHP ? D'aprés Rasmus, non... Mais sait-on jamais.
Yvan
Re: Le nom d'une variable
Posté : 28 déc. 2009, 21:53
par jojolapine
Bonsoir,
Dans quel contexte? Pour quelle utilisation?
Un peu plus de détails seraient bienvenus

Re: Le nom d'une variable
Posté : 29 déc. 2009, 02:19
par Myk
Il s'agit d'un "simple" cas général.
Par exemple, comment réaliser ceci :
$firstname = 'yvan';
echo getVarName($firstname); // firstname est affiché
Re: Le nom d'une variable
Posté : 29 déc. 2009, 04:58
par stealth35
ta plusieurs exemple sur le net, par ex :
http://us2.php.net/manual/en/language.v ... .php#76245
il me semblait que xdebug le faisais mais je retrouve pas (possible que je reve).
Re: Le nom d'une variable
Posté : 30 déc. 2009, 17:27
par zeus
Quel est l'intérêt
(la question peut paraitre abrupte, mais je pense qu'une fois que nous aurons cette réponse, nous aurons peut être d'autres solutions à t'apporter

)
Re: Le nom d'une variable
Posté : 02 janv. 2010, 04:35
par Myk
Merci pour ces quelques pistes.
Par exemple, pour débugger un(e) application/script.
$firstname = 'john';
dump($firstname) // echo '$firstname = john'
Re: Le nom d'une variable
Posté : 02 janv. 2010, 12:02
par AB
Oui mais bon dans ton exemple de débug tu demandes d'afficher le nom d'une variable que tu connais déjà. Donc comme disais
Zeus l'intérêt n'est pas évident à part peut-être le fait de t'éviter de faire une concaténation et d'écrire
<?php
$firstname = 'john';
echo '$firstname = '.$firstname;
?>
Remarque que si c'est uniquement pour t'éviter d'écrire une concaténation tu peux toujours créer une petite fonction de ce type pour simuler ta fonction dump
<?php
function affiche_var($nom)
{
global $$nom;
echo '$'.$nom.' = '.$$nom.'<br />';
}
$firstname = 'john';
affiche_var('firstname');// Affiche $firstname = john
?>
Re: Le nom d'une variable
Posté : 05 janv. 2010, 15:32
par Myk
Non, toute la difficulté est justement à ce niveau : comment récupérer le nom d'une variable sachant qu'il est aléatoire.
Toujours dans le le but d'avoir un dump d'une variable (vérifier sa valeur et avoir son nom), si ma fonction de départ est la suivante :
function dump($var) {
echo '%X = %Y'; // avec %X le nom de la variable et %Y sa valeur (%X étant le mécanisme que je n'arrive pas à trouver)
}
Alors :
$user = new stdClass();
$user->firstname = 'yvan';
$user->gender = 'male';
$user->address = array('postcode' => 75000, 'country' => 'france');
$user->admin = false;
dump($user) // doit afficher $user = object(stdClass)#1 {...}
$logged = false;
dump($logged) // doit afficher $logged = false
$total = 45;
dump($total) // doit afficher $total = 45
J'ai également testé ta solution (afficher_var), sans succès.

Re: Le nom d'une variable
Posté : 05 janv. 2010, 15:38
par stealth35
t'as fais ma methode ?
Re: Le nom d'une variable
Posté : 05 janv. 2010, 20:36
par AB
Bah suivant le même principe j'obtiens bien ce que tu veux afficher en faisant :
function affiche_var($nom)
{
global $$nom;
echo '$'.$nom.' = ';var_dump($$nom); echo'<br />';
}
$user = new stdClass();
$user->firstname = 'yvan';
$user->gender = 'male';
$user->address = array('postcode' => 75000, 'country' => 'france');
$user->admin = false;
$logged = false;
$total = 45;
affiche_var('user');
affiche_var('logged');
affiche_var('total');
affiche_var('azerty');
Affiche bien chez moi :
$user = object(stdClass)#1 (4) { ["firstname"]=> string(4) "yvan" ["gender"]=> string(4) "male" ["address"]=> array(2) { ["postcode"]=> int(75000) ["country"]=> string(6) "france" } ["admin"]=> bool(false) }
$logged = bool(false)
$total = int(45)
$azerty = NULL
Re: Le nom d'une variable
Posté : 07 févr. 2011, 19:04
par philodido
Il te suffis d'utiliser une variable dynamique c'est fait pour ce genre de cas. Ça te permettra référencer une variable qui change de nom en utilisant un nom qui ne change pas. :
http://www.lephpfacile.com/cours/26-les ... dynamiques
Re: Le nom d'une variable
Posté : 10 févr. 2011, 15:21
par macgawel
En fait, ce n'est pas très clair...
- Tu veux une fonction capable d'afficher la nom et la valeur d'une variable sans connaître cette variable ?
=> Je ne vois pas trop comment faire.
- Tu veux une fonction capable d'afficher la nom et la valeur d'une variable donnée ?
=> La réponse est déjà donnée.
- Tu veux pouvoir récupérer le contenu de toutes les variables utilisées dans une page ?
=> La fonction
get_defined_vars() est là pour ça...
Elle te permet de récupérer un tableau (nom => valeur)
Re: Le nom d'une variable
Posté : 14 févr. 2011, 17:47
par trainkill
Sinon, si c'est vraiment pour des raisons de log à des fins de debuggage, il existe FirePHP couplé à firebug et sa méthode FB::log($objet_tout_type);
voir sur
http://www.firephp.org/
Méthode qui t'affiche sur la console de firebug le descriptif complet de ton objet, jusqu'au niveau le plus fin