What is the explanation for the following syntax?
$var1->$var2 // Note the second $
$var1 is an object.
$var2 is (possibly) the name of a variable inside $var1.
If $var2="test"; this is evaluated to:
$var1->test;
You can do this with all sorts of things:
$test = array();
$name="test";
print_r($$name); // Prints array();
$test = new stdClass;
$test->hello = "hi";
$name2="hello";
echo $test->$name2; // Echos hi
You can even get really fancy:
echo $$name->$name2; // Echos hi