| 
        php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
  [2002-03-05 07:13 UTC] greg at mtechsolutions dot ca
 When using a variable variable in a class, $$this->varname does not work, ${$this->varname} must be used. 
Here is a simple script to show this in action. Put the {} in and it will work:
<?
$id = "yes";
class testClass {
	var $varname;
	
	function testClass($varname) {
		$this->varname = $varname;
	}
	
	function foo() {
		global $$this->varname;
		
		echo "$".$this->varname." is ".$$this->varname;
	}
}
$test = new testClass("id");
$test->foo();
?>
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits             
             | 
    |||||||||||||||||||||||||||
            
                 
                Copyright © 2001-2025 The PHP GroupAll rights reserved.  | 
        Last updated: Tue Nov 04 06:00:01 2025 UTC | 
Just to give you a better answer here. Consider $$a->b Does this mean the the class name $$a with the property b or the variable property $a->b? See the vagueness here? It could be interpreted as either ${$a->b} or {$$a}->b. That's why the {}'s are needed to resolve this ambiguity.