Le nom d'une variable

Myk
Petit nouveau ! | 4 Messages

28 déc. 2009, 20:01

Bonjour,

Peut-on récupérer le nom d'une variable en PHP ? D'aprés Rasmus, non... Mais sait-on jamais.

Yvan

ViPHP
ViPHP | 3607 Messages

28 déc. 2009, 21:53

Bonsoir,
Dans quel contexte? Pour quelle utilisation?
Un peu plus de détails seraient bienvenus ;)

Myk
Petit nouveau ! | 4 Messages

29 déc. 2009, 02:19

Il s'agit d'un "simple" cas général.

Par exemple, comment réaliser ceci :
$firstname = 'yvan';
echo getVarName($firstname); // firstname est affiché

ViPHP
ViPHP | 5462 Messages

29 déc. 2009, 04:58

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).

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 déc. 2009, 17:27

Quel est l'intérêt :?: :-k

(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 ;) )
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Myk
Petit nouveau ! | 4 Messages

02 janv. 2010, 04:35

Merci pour ces quelques pistes.

Par exemple, pour débugger un(e) application/script.
$firstname = 'john';
dump($firstname) // echo '$firstname = john'

ViPHP
AB
ViPHP | 5818 Messages

02 janv. 2010, 12:02

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
?>

Myk
Petit nouveau ! | 4 Messages

05 janv. 2010, 15:32

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. :(

ViPHP
ViPHP | 5462 Messages

05 janv. 2010, 15:38

t'as fais ma methode ?

ViPHP
AB
ViPHP | 5818 Messages

05 janv. 2010, 20:36

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

philodido
Invité n'ayant pas de compte PHPfrance

07 févr. 2011, 19:04

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

Mammouth du PHP | 672 Messages

10 févr. 2011, 15:21

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)

trainkill
Invité n'ayant pas de compte PHPfrance

14 févr. 2011, 17:47

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