Re: [RFC] [DISCUSSION] Compact Object Property Assignment

From: Date: Tue, 17 Mar 2020 21:33:38 +0000
Subject: Re: [RFC] [DISCUSSION] Compact Object Property Assignment
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-109115@lists.php.net to get a copy of this message
I don't think it's conflicting _if you insist on brackets_ after the new expression. PHP Parser grammar for "new" expressions is T_NEW class_name_reference ctor_arguments If you allowed the shorter syntax, ctor_arguments would allow an object_properties entry. I'm sure Nikita could clarify, though. On Mon, 16 Mar 2020 at 21:13, Jakob Givoni <jakob@givoni.dk> wrote: > On Mon, Mar 16, 2020 at 9:10 AM Matthew Brown <matthewmatthew@gmail.com> > wrote: > > I love the idea! > Thanks Matthew! > > > The syntax for new objects looks a little verbose – would it be possible > to use > > > > $foo = new Foo()[ > > property1 = "hello", > > property2 = 5, > > ]; > The short answer: I don't think so. > > This is not possible (though it's arguably 'nicer'): > > new Foo()->doSomething(); // syntax error, unexpected '->' > > Not sure why, but it's necessary to wrap the instantiation in brackets: > > (new Foo())->doSomething(); // Ok > > If someone can explain why, it would be enlightening! > > Furthermore, dropping the arrow would create conflicting syntax with > array access: > > $foo[1]; // Array access, give me the element with index 1, can be > used on objects as well > $foo[a = 1]; // Property assignment... ??? > > I'll update the RFC to reflect your proposal. > > Thank you, > Jakob >

« previous php.internals (#109115) next »