On Mon, Apr 5, 2021, 22:51 Marco Pivetta <ocram...@gmail.com> wrote:

>
>
> On Mon, Apr 5, 2021, 19:42 Mike Schinkel <m...@newclarity.net> wrote:
>
>>
>> > On Apr 5, 2021, at 12:47 PM, Ben Ramsey <b...@benramsey.com> wrote:
>> >
>> >> On Apr 5, 2021, at 11:40, André Hänsel <an...@webkr.de> 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?
>> >
>> >
>> > Mike Schinkel and I recently discussed this off-list. Mike, now’s your
>> > time to chime in with your ideas on this. :-)
>>
>> Thanks for the invite.
>>
>> I had asked Ben what he thought about allowing the following syntax as a
>> synonym for `new Foo()`:
>>
>> Foo::new()
>>
>> That would be backward compatible because you currently cannot have a
>> method named `new()`.
>>
>
> I have static ctors named `new` in multiple codebases:
> https://3v4l.org/FudWpk
>





> Sorry, mails synchronized now, and I did not realize that you already had
a waterfall of responses related to this :|

>

Reply via email to