>
> 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
>

Hi, Larry! The grammar is compiled with no warnings, so it is definitely
possible now. I also added a lot of tests that guarantee that existing
behaviour is preserved and new syntax works as expected.

Marco, Bilge, Levi, Larry, thank you for your positive feedback on the RFC.

Reply via email to