On 05.04.2021 at 18:40, André Hänsel wrote:

> I was wondering... PHP is the only language I know of where you have to
> write `(new Foo())->bar()` instead of
> `new Foo()->bar()`. This is particularly apparent with the builder pattern:
>
> $developer->drink((new Coffee())->withCream()->withSugar());
> $logger->log((new LogMessage())->withMessage('Coffee was drunk'));
>
> Since `new Foo()->bar()` cannot (and probably should not) be used to
> "dynamically instantiate a new thing of the class
> name returned by function Foo()", it seems like it would be no problem to
> change the precedence rules so that
> `new Foo()->bar()` means "instantiate a new Foo and call bar() on it".
>
> It's currently a syntax error, so allowing it would be automatically
> compatible.
>
> Has this ever been discussed before?

See <https://bugs.php.net/bug.php?id=70549>.

--
Christoph M. Becker

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

Reply via email to