By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,148 Members | 779 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,148 IT Pros & Developers. It's quick & easy.

Getting the names of variables passed to functions

P: n/a
Anyway to do it? I know you can use a variable's contents as a
variable name with $$name. With something like this:

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

Oct 10 '07 #1
Share this Question
Share on Google+
8 Replies


P: n/a
BoneIdol wrote:
Anyway to do it? I know you can use a variable's contents as a
variable name with $$name. With something like this:

<?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.
Out of interest, why do you want to do this?

If there isn't a PHP function (there is get_defined_vars() but I don't
think this does what you want) then you could create your own class that
manages variables.

eg.

class CVar {
protected $var_name = '';
protected $var_value = '';
public function __construct( $name = '', $value = '' ) {
$this->var_name = $name;
$this->var_value = $value;
}
public function getName() { return $this->name; }
public function getValue() { return $this->value; }
public function setName($name) { $this->var_name = $name; }
public function setValue($value){ $this->var_value = $value; }
}

function foo($bar) {
return $bat->getName();
}

$myvar = new CVar('animal','dog');
echo foo( &$myvar );
OR something like that....

just curious why ;-)

.... and now someone will point a really easy way to do it and as well
and i'll look a fool... LOL
Oct 10 '07 #2

P: n/a
Tyno Gendo wrote:
OR something like that....

just curious why ;-)

... and now someone will point a really easy way to do it and as well
and i'll look a fool... LOL
I noticed a few typos after I'd typed it into my email, cut and paste
into nusphere to see if it ran... so here is adjusted version with
corrected var names... I'm still curious.. why ? ;-)

class CVar {
protected $var_name = '';
protected $var_value = '';
public function __construct( $name = '', $value = '' ) {
$this->var_name = $name;
$this->var_value = $value;
}
public function getName() { return $this->var_name; }
public function getValue() { return $this->var_value; }
public function setName($name) { $this->var_name = $name; }
public function setValue($value){ $this->var_value = $value; }
}

function foo($bar) {
return $bar->getName();
}

$myvar = new CVar('animal','dog');
echo foo( $myvar );
Oct 10 '07 #3

P: n/a
On 10 Oct, 13:39, Tyno Gendo <tyno.ge...@example.netwrote:
BoneIdol wrote:
Anyway to do it? I know you can use a variable's contents as a
variable name with $$name. With something like this:
<?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.

Out of interest, why do you want to do this?

If there isn't a PHP function (there is get_defined_vars() but I don't
think this does what you want) then you could create your own class that
manages variables.

eg.

class CVar {
protected $var_name = '';
protected $var_value = '';
public function __construct( $name = '', $value = '' ) {
$this->var_name = $name;
$this->var_value = $value;
}
public function getName() { return $this->name; }
public function getValue() { return $this->value; }
public function setName($name) { $this->var_name = $name; }
public function setValue($value){ $this->var_value = $value; }
}

function foo($bar) {
return $bat->getName();
}

$myvar = new CVar('animal','dog');
echo foo( &$myvar );

OR something like that....

just curious why ;-)

... and now someone will point a really easy way to do it and as well
and i'll look a fool... LOL
It's more of a thought experiment than anything else. The idea is to
be able to define variables in classes on the fly with method
overloading. (function __get etc.)

So something like...

class foo
{
public var $bar;
private var $_vars = array();

public function __get($var)
{
$varname = get_variable_name($var); //Whatever code I need here
$_vars[$varname] = $var;
}
}

Note I just made that up off the top of my head and it's not finished
and doesn't let you work with variables that have already been
defined.

Really I'm just trying to do it to see if I can. ;)

Oct 10 '07 #4

P: n/a
BoneIdol wrote:
On 10 Oct, 13:39, Tyno Gendo <tyno.ge...@example.netwrote:
>BoneIdol wrote:
>>Anyway to do it? I know you can use a variable's contents as a
variable name with $$name. With something like this:
<?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.
Out of interest, why do you want to do this?

If there isn't a PHP function (there is get_defined_vars() but I don't
think this does what you want) then you could create your own class that
manages variables.

eg.

class CVar {
protected $var_name = '';
protected $var_value = '';
public function __construct( $name = '', $value = '' ) {
$this->var_name = $name;
$this->var_value = $value;
}
public function getName() { return $this->name; }
public function getValue() { return $this->value; }
public function setName($name) { $this->var_name = $name; }
public function setValue($value){ $this->var_value = $value; }
}

function foo($bar) {
return $bat->getName();
}

$myvar = new CVar('animal','dog');
echo foo( &$myvar );

OR something like that....

just curious why ;-)

... and now someone will point a really easy way to do it and as well
and i'll look a fool... LOL

It's more of a thought experiment than anything else. The idea is to
be able to define variables in classes on the fly with method
overloading. (function __get etc.)

So something like...

class foo
{
public var $bar;
private var $_vars = array();

public function __get($var)
{
$varname = get_variable_name($var); //Whatever code I need here
$_vars[$varname] = $var;
}
}

Note I just made that up off the top of my head and it's not finished
and doesn't let you work with variables that have already been
defined.

Really I'm just trying to do it to see if I can. ;)
I see. A sort of 'variables factory'. well, if you mix the class CVar
and your 'fooFactory' you could have a result.
Oct 10 '07 #5

P: n/a
On Oct 10, 8:49 am, BoneIdol <leon...@hotmail.comwrote:
On 10 Oct, 13:39, Tyno Gendo <tyno.ge...@example.netwrote:
BoneIdol wrote:
Anyway to do it? I know you can use a variable's contents as a
variable name with $$name. With something like this:
<?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.
Out of interest, why do you want to do this?
If there isn't a PHP function (there is get_defined_vars() but I don't
think this does what you want) then you could create your own class that
manages variables.
eg.
class CVar {
protected $var_name = '';
protected $var_value = '';
public function __construct( $name = '', $value = '' ) {
$this->var_name = $name;
$this->var_value = $value;
}
public function getName() { return $this->name; }
public function getValue() { return $this->value; }
public function setName($name) { $this->var_name = $name; }
public function setValue($value){ $this->var_value = $value; }
}
function foo($bar) {
return $bat->getName();
}
$myvar = new CVar('animal','dog');
echo foo( &$myvar );
OR something like that....
just curious why ;-)
... and now someone will point a really easy way to do it and as well
and i'll look a fool... LOL

It's more of a thought experiment than anything else. The idea is to
be able to define variables in classes on the fly with method
overloading. (function __get etc.)

So something like...

class foo
{
public var $bar;
private var $_vars = array();

public function __get($var)
{
$varname = get_variable_name($var); //Whatever code I need here
$_vars[$varname] = $var;
}

}

Note I just made that up off the top of my head and it's not finished
and doesn't let you work with variables that have already been
defined.

Really I'm just trying to do it to see if I can. ;)
You don't need this to "define variables in classes on the fly with
method overloading." That's exactly what __get() and __set() are
for. I'm not sure why you need the name of the variable that was
passed to it. In your example above you're using __get() to do what
is supposed to be done with __set().

Don't you really just want something like this:

class Foo {

private $theVars = array();

public function __get($name) {
return $this->theVars[$name];
}

public function __set($name, $val) {
$this->theVars[$name] = $val;
}
}

Oct 10 '07 #6

P: n/a
On 10 Oct, 14:18, ZeldorBlat <zeldorb...@gmail.comwrote:
On Oct 10, 8:49 am, BoneIdol <leon...@hotmail.comwrote:
On 10 Oct, 13:39, Tyno Gendo <tyno.ge...@example.netwrote:
BoneIdol wrote:
Anyway to do it? I know you can use a variable's contents as a
variable name with $$name. With something like this:
<?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.
Out of interest, why do you want to do this?
If there isn't a PHP function (there is get_defined_vars() but I don't
think this does what you want) then you could create your own class that
manages variables.
eg.
class CVar {
protected $var_name = '';
protected $var_value = '';
public function __construct( $name = '', $value = '' ) {
$this->var_name = $name;
$this->var_value = $value;
}
public function getName() { return $this->name; }
public function getValue() { return $this->value; }
public function setName($name) { $this->var_name = $name; }
public function setValue($value){ $this->var_value = $value; }
}
function foo($bar) {
return $bat->getName();
}
$myvar = new CVar('animal','dog');
echo foo( &$myvar );
OR something like that....
just curious why ;-)
... and now someone will point a really easy way to do it and as well
and i'll look a fool... LOL
It's more of a thought experiment than anything else. The idea is to
be able to define variables in classes on the fly with method
overloading. (function __get etc.)
So something like...
class foo
{
public var $bar;
private var $_vars = array();
public function __get($var)
{
$varname = get_variable_name($var); //Whatever code I need here
$_vars[$varname] = $var;
}
}
Note I just made that up off the top of my head and it's not finished
and doesn't let you work with variables that have already been
defined.
Really I'm just trying to do it to see if I can. ;)

You don't need this to "define variables in classes on the fly with
method overloading." That's exactly what __get() and __set() are
for. I'm not sure why you need the name of the variable that was
passed to it. In your example above you're using __get() to do what
is supposed to be done with __set().

Don't you really just want something like this:

class Foo {

private $theVars = array();

public function __get($name) {
return $this->theVars[$name];
}

public function __set($name, $val) {
$this->theVars[$name] = $val;
}

}
Heh, looking back I forgot my $this->s. Oops.

Being honest I only just started looking into more advanced class
handling today, including overloading. Wish the php.net examples were
a bit clearer, wouldn't look like such an idiot now. ;)

Oh well, kept me entertained for a little while at least.

Oct 10 '07 #7

P: n/a
On Oct 10, 2:00 pm, BoneIdol <leon...@hotmail.comwrote:
Anyway to do it? I know you can use a variable's contents as a
variable name with $$name. With something like this:

<?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.
Okay if you are using classes. Then this is dead on easy.

<?php

class MyClass {
var $myname;
var $myemail;
var $myphonenr;
function getVariable($var){ return $this->$var;}
function setVariable($var,$value){ $this->$var = $value;}
}

// Example use;
$myclass = new $MyClass();

$myclass->setVaribale("myname","Michael");
$myclass->setVaribale("myemail","mi*****@greenquery.com") ;

print "Hi " . $myclass->getVariable("myname");

//View the class
var_dump($myclass);
?>

I hope this is what your looking for

Best Regards
Michael

Oct 10 '07 #8

P: n/a
On Oct 10, 7:53 pm, mich...@greenquery.com wrote:
On Oct 10, 2:00 pm, BoneIdol <leon...@hotmail.comwrote:
Anyway to do it? I know you can use a variable's contents as a
variable name with $$name. With something like this:
<?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.

Okay if you are using classes. Then this is dead on easy.

<?php

class MyClass {
var $myname;
var $myemail;
var $myphonenr;
function getVariable($var){ return $this->$var;}
function setVariable($var,$value){ $this->$var = $value;}
}

// Example use;
$myclass = new $MyClass();

$myclass->setVaribale("myname","Michael");
$myclass->setVaribale("myemail","mich...@greenquery.com") ;

print "Hi " . $myclass->getVariable("myname");

//View the class
var_dump($myclass);

?>

I hope this is what your looking for

Best Regards
Michael
// Sorry Just fixed my misspells!
Okay if you are using classes. Then this is dead on easy.

<?php

class MyClass {
var $myname;
var $myemail;
var $myphonenr;
function getVariable($var){ return $this->$var;}
function setVariable($var,$value){ $this->$var = $value;}
}

// Example use;
$myclass = new $MyClass();

$myclass->setVariable("myname","Michael");
$myclass->setVariable("myemail","mich...@greenquery.com") ;

print "Hi " . $myclass->getVariable("myname");

//View the class
var_dump($myclass);

?>

I hope this is what your looking for

Best Regards
Michael

Oct 10 '07 #9

This discussion thread is closed

Replies have been disabled for this discussion.