On Tue, Apr 23, 2024 at 11:10 AM Valentin Udaltsov
<udaltsov.valen...@gmail.com> wrote:
>
> вт, 9 апр. 2024 г. в 19:41, Larry Garfield <la...@garfieldtech.com>:
>>
>> On Mon, Apr 8, 2024, at 6:08 AM, Valentin Udaltsov wrote:
>> > Hello internals,
>> >
>> >
>> >
>> > I would like to propose a syntax change for PHP 8.4 that allows to
>> > immediately access instantiated objects without wrapping the expression
>> > into parentheses.
>> >
>> >
>> >
>> > This was requested and discussed several times, see:
>> >
>> > - https://externals.io/message/66197
>> >
>> > - https://bugs.php.net/bug.php?id=70549
>> >
>> > - https://externals.io/message/101811
>> >
>> > - https://externals.io/message/113953
>> >
>> >
>> >
>> > Here's what you will be able to write after this change:
>> >
>> > ```php
>> >
>> > class MyClass
>> >
>> > {
>> >
>> >     const CONSTANT = 'constant';
>> >
>> >     public static $staticProperty = 'staticProperty';
>> >
>> >     public static function staticMethod(): string { return 'staticMethod'; 
>> > }
>> >
>> >     public $property = 'property';
>> >
>> >     public function method(): string { return 'method'; }
>> >
>> >     public function __invoke(): string { return '__invoke'; }
>> >
>> > }
>> >
>> >
>> >
>> > var_dump(
>> >
>> >     new MyClass()::CONSTANT,        // string(8)  "constant"
>> >
>> >     new MyClass()::$staticProperty, // string(14) "staticProperty"
>> >
>> >     new MyClass()::staticMethod(),  // string(12) "staticMethod"
>> >
>> >     new MyClass()->property,        // string(8)  "property"
>> >
>> >     new MyClass()->method(),        // string(6)  "method"
>> >
>> >     new MyClass()(),                // string(8)  "__invoke"
>> >
>> > );
>> >
>> > ```
>> >
>> >
>> >
>> > For more details see the RFC: 
>> > https://wiki.php.net/rfc/new_without_parentheses
>> >
>> > Implementation: https://github.com/php/php-src/pull/13029
>>
>> I always thought there was some technical parser reason why this wasn't 
>> possible.  Maybe that was true in 5.x but isn't anymore?
>>
>> I cannot speak to the implementation, but I'm all for the change itself.
>>
>> --Larry Garfield
>
>
> Does anyone have additional feedback? I'd like to start voting on Thursday, 
> April 25th.
> I've also added a section on other syntax ideas that have been expressed on 
> Twitter and in the PR: 
> https://wiki.php.net/rfc/new_without_parentheses#other_syntax_ideas
> --
> Valentin

I suspect this will break (badly written) reflection in interesting ways:

https://3v4l.org/mcSNH

This basically breaks dereferencing order of operations and makes it
inconsistent.

Robert Landers
Software Engineer
Utrecht NL

Reply via email to