On Mon, Mar 16, 2020 at 9:10 AM Matthew Brown <matthewmatt...@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

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to