Variable Variables and Arrays
I'm a big fan of PHP's variable variables functionality. It's great for abstracting code with this sort of syntax:
$property_name = 'color';
echo $theClass->$property_name; // same as $theClass->color
The documentation does mention a potential tripping point with array index ambiguity. You might expect the following references to be equal:
$prop = 'internalArray';
$theClass = new stdClass;
$theClass->internalArray = array('red', 'white', 'blue');
echo $theClass->internalArray[2] == $theClass->$prop[2] ? "equal" : "not equal";
However, the above code will output "not equal" because $prop[2] is evaluated
first. This returns a character index within $prop, so the final check is
against $theClass->t, which is not set. Curly braces around the property can
be used to clarify your meaning:
echo $theClass->internalArray[3] == $theClass->{$prop}[2] ? "equal" : "not equal";