Re: Use of {} with member.
| From: | Yasuo Ohgaki | Date: | Fri, 30 Jan 2015 00:56:36 +0000 |
| Subject: | Re: Use of {} with member. | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-81395@lists.php.net to get a copy of this message | ||
Hi all,
On Fri, Jan 30, 2015 at 8:51 AM, Rasmus Lerdorf <rasmus@lerdorf.com> wrote:
> 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.
I agree.
Since ${var} works in quoted string just like shells, there may be
confusion. Extending
http://php.net/manual/en/language.variables.basics.php
or adding new section might be good.
I haven't checked variable variable fully. There may be misbehavior
http://3v4l.org/vmKvi
Apparently, HHVM have missed to support multiple variable variable
reference.
Heads up HHVM folks!
Regards,
--
Yasuo Ohgaki
yohgaki@ohgaki.net