In PHP there’s a functionality officially called “Variable Variables” where one can assign variable variables. A variable variable takes the value of one variable as the name for a new variable! For example:
$name='Joe'; $$name='Smith'; // could also be written as ${$name}='Smith'
The first variable $name contains the value ‘Joe’, while the second is variable named $Joe with the value ‘Smith’. Take into account that PHP variables are case-sensitive!
I’ve never used this functionality and do not see the purpose for that. Could someone explain to me where this functionality could be exploited as a good practise?
Advertisement
Answer
Sometimes we need software that is extremely flexible and that we can parametrize. You have to prepare the whole thing, of course, but part of it just comes from user input, and we have no time to change the software just because the user needs a new input.
With variable variables and variable functions you can solve problems that would be much harder to solve without them.
Quick Example:
Without variable variables:
$comment = new stdClass(); // Create an object $comment->name = sanitize_value($array['name']); $comment->email = sanitize_values($array['email']); $comment->url = sanitize_values($array['url']); $comment->comment_text = sanitize_values($array['comment_text']);
With variable variables
$comment = new stdClass(); // Create a new object foreach( $array as $key=>$val ) { $comment->$key = sanitize_values($val); }