PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > alt.php > Getting names of variables passed to functions...
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Getting names of variables passed to functions...

Réponse
 
LinkBack Outils de la discussion
Vieux 10/10/2007, 12h11   #1
BoneIdol
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Getting names of variables passed to functions...

Anyway to do it? I know you can use a variable's contents as a
variable name with $$name, but I'd like to do it the other way around.

<?php
function foo($bar)
{
return $bar;
}

$name = foo($variable_name);
?>

I'd like the function foo to return a string of the variable name
passed to it, in this case 'variable_name'. A friend of mine who does C
++ programming says that pointers are the way to go here, but as far
as I know PHP doesn't support them.

  Réponse avec citation
Vieux 12/10/2007, 22h31   #2
Janwillem Borleffs
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Getting names of variables passed to functions...

BoneIdol wrote:
> I'd like the function foo to return a string of the variable name
> passed to it, in this case 'variable_name'. A friend of mine who does
> C ++ programming says that pointers are the way to go here, but as far
> as I know PHP doesn't support them.
>


A (not fullproof) way is the following:

function foo($bar) {
$keys = array_keys($GLOBALS);
$values = array_values($GLOBALS);
$index = array_search($bar, $values, true);
if ($index !== false) {
return $keys[$index];
}
}

$variable_name = 'foo';
$name = foo($variable_name);
print $name;

Of course, this only works when each variable has a unique value...


JW


  Réponse avec citation
Vieux 13/10/2007, 13h15   #3
Thomas Mlynarczyk
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Getting names of variables passed to functions...

Also sprach BoneIdol:

> Anyway to do it?


No. You could try this (not tested, though):

$foo = 'bar';
doSomething( compact( 'foo' ) );

function doSomething( $aVar )
{
list( $sVarName, $xVarValue ) = each( $aVar );
echo "The variable is called $sVarName and has the value $xVarValue.\n";
}

With objects in PHP5 you can use the __set()/__get()/__call() magic
functions (not tested either):

class Foo
{
private $_aVars = array();

public function __set( $sName, $xValue )
{
echo "Setting $sName to value $xValue.\n";
$this->_aVars[$sName] = $xValue;
}

public function __get( $sName )
{
echo "Getting $sName.\n";
return $this->_aVars[$sName];
}
}

$oFoo = new Foo;
$oFoo->bar = 'baz';
echo $oFoo->bar;

But why do you need such a functionality? Maybe there is a solution to your
problem (whatever it is) which does not require it?

Greetings,
Thomas


  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 13h43.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,07673 seconds with 11 queries