On 01/29/2015 01:32 PM, Yasuo Ohgaki wrote: > Hi all, > > I came across with bug #68947 https://bugs.php.net/bug.php?id=68947 > and realized small inconsistency. > > http://3v4l.org/ldZKl > > $obj->${array[$key]}; // Syntax error > $obj->{$array[$key]}; // Works > > $obj->${key}; // E_NOTICE. Does not work > $obj->{$key}; // Works > > echo "${array[$key]}"; // Works > echo "{$array[$key]}"; // Works > > Of course, script/string parsing aren't the same. Are there technical > reasons > why ${value} is not allowed? If there are, we may encourage > > echo "{$array[$key]}"; // Works > > rather than > > echo "${array[$key]}"; // Works
That all seems expected to me. The original point of that bug report is the BC break due to the uniform variable rfc. The change makes sense, but just for the record, I have installed about 10 popular, and a couple of not-so-popular, PHP apps and tested them on PHP 7 over the past week and this was the only BC break that affected that set of 10 apps. See: https://github.com/rlerdorf/avalon/commit/18847d0fe65381977397271c79e04dde72ef86f8 It is listed as a bullet point in a sea of other bullet points in the UPGRADING file: . Indirect variable, property and method references are now interpreted with left-to-right semantics. See details in: https://wiki.php.net/rfc/uniform_variable_syntax#semantic_differences_in_existing_syntax But we probably need a section devoted to BC breaks that includes some real-world code examples. -Rasmus
signature.asc
Description: OpenPGP digital signature