I was wondering, how is the semantics of braces exactly defined inside PHP? For instance, suppose we have defined:
$a = \"foo\";
then what
There are a lot of possibilities for braces (such as omitting them), and things get even more complicated when dealing with objects or arrays.
I prefer interpolation to concatenation, and I prefer to omit braces when not necessary. Sometimes, they are.
You cannot use object operators with ${}
syntax. You must use {$...}
when calling methods, or chaining operators (if you have only one operator such as to get a member, the braces may be omitted).
The ${}
syntax can be used for variable variables:
$y = 'x';
$x = 'hello';
echo "${$y}"; //hello
The $$
syntax does not interpolate in a string, making ${}
necessary for interpolation. You can also use strings (${'y'}
) and even concatenate within a ${}
block. However, variable variables can probably be considered a bad thing.
For arrays, either will work ${foo['bar']}
vs. {$foo['bar']}
. I prefer just $foo[bar]
(for interpolation only -- outside of a string bar
will be treated as a constant in that context).